Continuo da qui, copio dal Reference Manual, PDF scaricabile da qui, sono a p.415.

`matrixexp (M)`

`matrixexp (M, n)`

`matrixexp (M, V)`

Calculates the matrix exponential ** e^(M*V)**. Instead of the vector

**a number**

`V`

**can be specified as the second argument. If this argument is omitted**

`n`

**replaces it by 1.**

`matrixexp`

The matrix exponential of a matrix ** M** can be expressed as a power series:

**.**

`e^M=sum(M^k/k!,0,inf)`

`matrixmap (f, M)`

Returns a matrix with element ** i,j** equal to

**.**

`f(M[i,j])`

See also ** map**,

**,**

`fullmap`

**, and**

`fullmapl`

**.**

`apply`

`matrixp (expr)`

Returns ** true** if

**is a matrix, otherwise**

`expr`

**.**

`false`

`matrix_element_add`

Default value: ** +**.

** matrix_element_add** is the operation invoked in place of addition in a matrix multiplication.

**can be assigned any n-ary operator (that is, a function which handles any number of arguments). The assigned value may be the name of an operator enclosed in quote marks, the name of a function, or a lambda expression.**

`matrix_element_add`

See also ** matrix_element_mult** and

**.**

`matrix_element_transpose`

`(%i1) `**matrix_element_add: "*"$**
(%i2) **matrix_element_mult: "^"$**
(%i3) **aa: matrix ([a, b, c], [d, e, f]);**
[ a b c ]
(%o3) [ ]
[ d e f ]
(%i4) **bb: matrix ([u, v, w], [x, y, z]);**
[ u v w ]
(%o4) [ ]
[ x y z ]
(%i5) **aa . transpose (bb);**
[ u v w x y z ]
[ a b c a b c ]
(%o5) [ ]
[ u v w x y z ]
[ d e f d e f ]

`matrix_element_mult`

Default value: ** ***.

** matrix_element_mult** is the operation invoked in place of multiplication in a matrix multiplication.

**can be assigned any binary operator. The assigned value may be the name of an operator enclosed in quote marks, the name of a function, or a lambda expression.**

`matrix_element_mult`

The dot operator ** .** is a useful choice in some contexts.

See also ** matrix_element_add** and

**.**

`matrix_element_transpose`

`(%i1) `**matrix_element_add: lambda ([[x]], sqrt (apply ("+", x)))$**
(%i2) **matrix_element_mult: lambda ([x, y], (x - y)^2)$**
(%i3) **[a, b, c] . [x, y, z];**
2 2 2
(%o3) sqrt((c - z) + (b - y) + (a - x) )
(%i4) **aa: matrix ([a, b, c], [d, e, f]);**
[ a b c ]
(%o4) [ ]
[ d e f ]
(%i5) **bb: matrix ([u, v, w], [x, y, z]);**
[ u v w ]
(%o5) [ ]
[ x y z ]
(%i6) **aa . transpose (bb);**
(%o6)
[ 2 2 2 2 2 2 ]
[ sqrt((c - w) + (b - v) + (a - u) ) sqrt((c - z) + (b - y) + (a - x) ) ]
[ ]
[ 2 2 2 2 2 2 ]
[ sqrt((f - w) + (e - v) + (d - u) ) sqrt((f - z) + (e - y) + (d - x) ) ]

`matrix_element_transpose`

Default value: ** false**.

** matrix_element_transpose** is the operation applied to each element of a matrix when it is transposed.

**can be assigned any unary operator. The assigned value may be the name of an operator enclosed in quote marks, the name of a function, or a lambda expression.**

`matrix_element_mult`

When ** matrix_element_transpose** equals

**, the**

`transpose`

**function is applied to every element. When**

`transpose`

**equals**

`matrix_element_transpose`

**, the**

`nonscalars`

**function is applied to every nonscalar element. If some element is an atom, the nonscalars option applies transpose only if the atom is declared**

`transpose`

**, while the**

`nonscalar`

**option always applies**

`transpose`

**.**

`transpose`

The default value, ** false**, means no operation is applied.

See also ** matrix_element_add** and

**.**

`matrix_element_mult`

`(%i1) `**declare (a, nonscalar)$**
(%i2) **transpose ([a, b]);**
[ a ]
(%o2) [ ]
[ b ]
(%i3) **matrix_element_transpose: nonscalars$**
(%i4) **transpose ([a, b]);**
[ transpose(a) ]
(%o4) [ ]
[ b ]
(%i5) **matrix_element_transpose: transpose$**
(%i6) **transpose ([a, b]);**
[ transpose(a) ]
(%o6) [ ]
[ transpose(b) ]
(%i7) **matrix_element_transpose: lambda ([x], realpart(x) - %i*imagpart(x))$**
(%i8) **m: matrix ([1 + 5*%i, 3 - 2*%i], [7*%i, 11]);**
[ 5 %i + 1 3 - 2 %i ]
(%o8) [ ]
[ 7 %i 11 ]
(%i9) **transpose (m);**
[ 1 - 5 %i - 7 %i ]
(%o9) [ ]
[ 2 %i + 3 11 ]

`mattrace (M)`

Returns the trace (that is, the sum of the elements on the main diagonal) of the square matrix ** M**.

** mattrace** is called by

**, an alternative to Maxima’s**

`ncharpoly`

**.**

`charpoly`

** load ("nchrpl")** loads this function.

`minor (M, i, j)`

Returns the ** i, j** minor of the matrix

**. That is,**

`M`

**with row**

`M`

**and column**

`i`

**removed.**

`j`

`ncharpoly (M, x)`

Returns the characteristic polynomial of the matrix ** M** with respect to

**. This is an alternative to Maxima’s**

`x`

**.**

`charpoly`

** ncharpoly** works by computing traces of powers of the given matrix, which are known to be equal to sums of powers of the roots of the characteristic polynomial. From these quantities the symmetric functions of the roots can be calculated, which are nothing more than the coefficients of the characteristic polynomial.

**works by forming the determinant of**

`charpoly`

**. Thus**

`x * ident [n] - a`

**wins, for example, in the case of large dense matrices filled with integers, since it avoids polynomial arithmetic altogether.**

`ncharpoly`

** load ("nchrpl")** loads this file.

`newdet (M)`

Computes the determinant of the matrix ** M** by the Johnson-Gentleman tree minor algorithm.

**returns the result in CRE form.**

`newdet`

`permanent (M)`

Computes the permanent of the matrix ** M** by the Johnson-Gentleman tree minor algorithm. A permanent is like a determinant but with no sign changes.

**returns the result in CRE form. See also**

`permanent`

**.**

`newdet`

`rank (M)`

Computes the rank of the matrix ** M**. That is, the order of the largest non-singular subdeterminant of

`M`

.** rank** may return the wrong answer if it cannot determine that a matrix element that is equivalent to zero is indeed so.

`ratmx`

Default value: ** false**.

When ** ratmx** is

**, determinant and matrix addition, subtraction, and multiplication are performed in the representation of the matrix elements and cause the result of matrix inversion to be left in general representation.**

`false`

When ** ratmx** is

**, the 4 operations mentioned above are performed in CRE form and the result of matrix inverse is in CRE form. Note that this may cause the elements to be expanded (depending on the setting of**

`true`

**) which might not always be desired.**

`ratfac`

⭕