Look at the definition of u/ . u/ applied to empty returns an identity element (aka neutral). For *, the identity is 1 :

   * b. 1
1 $~ }.@$


] wouldn't do - it returns a list, and the wrong list at that.

Determinant of a non-square matrix is not something I understand. -/ . * will operate according to the spec, and when it runs out of rows it will create a zero minor, I think. If you have more rows than columns it might get a nonzero result.

Henry Rich

On 5/15/2013 4:57 PM, Elton Wang wrote:
Thanks Henry and Raul,
I just confused on the last step of the recursion, for

u =. -/
v =. *
f =. v/@,`({."1 u . v $:@minors)@.(0<{:@$)

question 1: in the (0={:@$) case, how's v/ work on an empty array? can I 
replace it to ]?

question2:  for y =. i. 3 1,
minor y is empty how is f y = ({."1 u . v f@minors) y == -/y?

On May 15, 2013, at 4:17 PM, Henry Rich <[email protected]> wrote:

See what minors does:

   minors=: }."1 @ (1&([\.))
   minors i. 4 4
5  6  7
9 10 11
13 14 15

1  2  3
9 10 11
13 14 15

1  2  3
5  6  7
13 14 15

1  2  3
5  6  7
9 10 11

Remove the first column, and each row, producing a brick of minors.

v/@,`({."1 u . v $:@minors)@.(0<{:@$) @ ,. "2

,. applied at rank 2 has no effect on tables, and exists only to force an atom 
or a list to be a table; so we can ignore the ,.

p`q@.(0<{:@$)

means 'do p if y is empty, otherwise q'.  This q is going to reduce the size of 
the array each time, and at the end, when there is no array left, v/ will 
return the neutral for v .

({."1 u . v $:@minors)

This says recur on the minors ($:@minors) and then multiply the result on the 
minors by the first column, the one we discarded in minors.  And the 'multiply' 
isn't just *, it's the DYAD of u . v, which for -/ . * means multiply scalar * 
row, and then alternately add and subtract, as you can see from considering -/\ 
i. 6 .

Henry Rich

On 5/15/2013 3:42 PM, Elton Wang wrote:
Can anyone please help me understand u. v on monad case?
For instance, -/ . * i.3, how's it get reduced step by step on the definition 
below?

DET=: 2 : 'v/@,`({."1 u . v $:@minors)@.(0<{:@$) @ ,. "2' minors=: }."1 @ 
(1&([\.))

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to