rslt ← (f ##.alt g) mat                                 ⍝ Alternant.

From Adám Brudzewsky, who says:

Direct translation from the SAX 6.1 manual, from which I quote:

f.g ⍵ Alternant

The expressions -.×⍵ and +.×⍵ are for square matrix arguments ⍵, the determinant
and the permanent of mathematics.  The generalization to  arguments  other  than
plus, minus and times is based on construing  the  determinant as an alternating
sum (-⌿) over products over the diagonals of tables obtained  by  permuting  the
major cells of ⍵.

The model for the determinant described here is illuminating for what it reveals
about the close association between the monadic and  dyadic  forms  of  the  dot
operator (f.g).  The determinant is generated by the expression -.×⍵, where ⍵ is
a matrix of integers (usually square, but possibly with more rows than columns).
Only the top-left square portion of an array with more columns than rows is con-
sidered; that is, ⍵ is truncated to be (⌊/⍴⍵)↑⍵.

A model supplied by McDonnell and Hui for monadic inner product  is available in
the recursive function DOT shown below; the two functions f and g are assumed to
be subtract (⍺-⍵) and times (⍺×⍵) in the following example.

        ∇ z←DOT ⍵;M
    [1]   →(1≠¯1↑⍴⍵)/L0
    [2]   →0⊣z←f⌿⍵ ⍝ one-column case
    [3]  L0:M←~⍤1 0 ⊂ ⍳0@⍴⍵ ⍝ minors
    [4]   z←⍵[;⎕io] f.g DOT⍤2 ⍵[M;1↓⍳(⍴⍵)[1+⎕io]]
        ∇

For example, given the array M:

        ⊢M←3 3⍴6 7 2 1 5 9 8 3 4
    6 7 2
    1 5 9
    8 3 4

the expression which DOT evaluates to produce the determinant uses  each  scalar
in the first column of M with subarrays called minors derived from the remaining
columns of the remaining rows:

        (6×(5×4)-3×9) - (1×(7×4)-3×2) - 8×(7×9)-5×2
    360

Examples:

    det ← -alt×                     ⍝ determinant

    det 2 2⍴2 3 4 5
¯2
    det 0⍪⍨ 2 2⍴2 3 4 5
¯2
    det 2 2⍴0 1,1 0
¯1
    det 1 1⍴3
3
    det 1 0⍴3
0
    det 0 1⍴3
1
    det 0 0⍴3
1
    hil ← {÷1+∘.+⍨(⍳⍵)-⎕io}         ⍝ Order-⍵ Hilbert matrix.

    det hil 5
3.749295132E¯12

    det 2 2⍴ 0 1, 1 0
¯1
    ,alt, ⎕←3 3⍴⎕A
ABC
DEF
GHI
┌───────────────┐
│AEIHFDBIHCGBFEC│
└───────────────┘

    {⍺ ⍵}alt{⍺ ⍵} ⎕←3 3⍴⎕A
ABC
DEF
GHI
┌───────────────────────────────────────┐
│┌───────────┬─────────────────────────┐│
││┌─┬───────┐│┌───────────┬───────────┐││
│││A│┌──┬──┐│││┌─┬───────┐│┌─┬───────┐│││
│││ ││EI│HF│││││D│┌──┬──┐│││G│┌──┬──┐││││
│││ │└──┴──┘││││ ││BI│HC││││ ││BF│EC│││││
││└─┴───────┘│││ │└──┴──┘│││ │└──┴──┘││││
││           ││└─┴───────┘│└─┴───────┘│││
││           │└───────────┴───────────┘││
│└───────────┴─────────────────────────┘│
└───────────────────────────────────────┘
    +alt+ 2 2⍴⍳4
10
    +alt- 2 2⍴⍳4
¯2
    +alt× ⎕←4 4⍴ 1 1 1 1, 2 1 0 0, 3 0 1 0, 4 0 0 1     ⍝ permanent
1 1 1 1
2 1 0 0
3 0 1 0
4 0 0 1
10

See also: det

Back to: contents

Back to: Workspaces