UNPKG

1.07 kBtext/coffeescriptView Raw
1### cofactor =====================================================================
2
3Tags
4----
5scripting, JS, internal, treenode, general concept
6
7Parameters
8----------
9m,i,j
10
11General description
12-------------------
13Cofactor of a matrix component.
14Let c be the cofactor matrix of matrix m, i.e. tranpose(c) = adj(m).
15This function returns c[i,j].
16
17###
18
19
20Eval_cofactor = ->
21
22 i = 0
23 j = 0
24 n = 0
25 push(cadr(p1))
26 Eval()
27 p2 = pop()
28 if (istensor(p2) && p2.tensor.ndim == 2 && p2.tensor.dim[0] == p2.tensor.dim[1])
29 doNothing = 1
30 else
31 stop("cofactor: 1st arg: square matrix expected")
32 n = p2.tensor.dim[0]
33 push(caddr(p1))
34 Eval()
35 i = pop_integer()
36 if (i < 1 || i > n)
37 stop("cofactor: 2nd arg: row index expected")
38 push(cadddr(p1))
39 Eval()
40 j = pop_integer()
41 if (j < 1 || j > n)
42 stop("cofactor: 3rd arg: column index expected")
43 cofactor(p2, n, i - 1, j - 1)
44
45cofactor = (p, n, row, col) ->
46 i = 0
47 j = 0
48 for i in [0...n]
49 for j in [0...n]
50 if (i != row && j != col)
51 push(p.tensor.elem[n * i + j])
52 determinant(n - 1)
53 if ((row + col) % 2)
54 negate()
55
56
57