UNPKG

algebrite

Version:

Computer Algebra System in Coffeescript

58 lines (46 loc) 1.07 kB
### cofactor ===================================================================== Tags ---- scripting, JS, internal, treenode, general concept Parameters ---------- m,i,j General description ------------------- Cofactor of a matrix component. Let c be the cofactor matrix of matrix m, i.e. tranpose(c) = adj(m). This function returns c[i,j]. ### Eval_cofactor = -> i = 0 j = 0 n = 0 push(cadr(p1)) Eval() p2 = pop() if (istensor(p2) && p2.tensor.ndim == 2 && p2.tensor.dim[0] == p2.tensor.dim[1]) doNothing = 1 else stop("cofactor: 1st arg: square matrix expected") n = p2.tensor.dim[0] push(caddr(p1)) Eval() i = pop_integer() if (i < 1 || i > n) stop("cofactor: 2nd arg: row index expected") push(cadddr(p1)) Eval() j = pop_integer() if (j < 1 || j > n) stop("cofactor: 3rd arg: column index expected") cofactor(p2, n, i - 1, j - 1) cofactor = (p, n, row, col) -> i = 0 j = 0 for i in [0...n] for j in [0...n] if (i != row && j != col) push(p.tensor.elem[n * i + j]) determinant(n - 1) if ((row + col) % 2) negate()