- :
`r`=**expm**`(`

¶`A`) Return the exponential of a matrix.

The matrix exponential is defined as the infinite Taylor series

expm (A) = I + A + A^2/2! + A^3/3! + ...

However, the Taylor series is

*not*the way to compute the matrix exponential; see Moler and Van Loan, Nineteen Dubious Ways to Compute the Exponential of a Matrix, SIAM Review, 1978. This routine uses Ward’s diagonal Padé approximation method with three step preconditioning (SIAM Journal on Numerical Analysis, 1977). Diagonal Padé approximations are rational polynomials of matrices-1 D (A) N (A)

whose Taylor series matches the first

`2q+1`

terms of the Taylor series above; direct evaluation of the Taylor series (with the same preconditioning steps) may be desirable in lieu of the Padé approximation when`Dq(A)`

is ill-conditioned.

- :
`s`=**logm**`(`

¶`A`) - :
`s`=**logm**`(`

¶`A`,`opt_iters`) - :
`[`

`s`,`iters`] =**logm**`(…)`

¶ Compute the matrix logarithm of the square matrix

`A`.The implementation utilizes a Padé approximant and the identity

logm (

`A`) = 2^k * logm (`A`^(1 / 2^k))The optional input

`opt_iters`is the maximum number of square roots to compute and defaults to 100.The optional output

`iters`is the number of square roots actually computed.

- :
`s`=**sqrtm**`(`

¶`A`) - :
`[`

`s`,`error_estimate`] =**sqrtm**`(`

¶`A`) Compute the matrix square root of the square matrix

`A`.Ref: N.J. Higham. A New sqrtm for MATLAB. Numerical Analysis Report No. 336, Manchester Centre for Computational Mathematics, Manchester, England, January 1999.

- :
`C`=**kron**`(`

¶`A`,`B`) - :
`C`=**kron**`(`

¶`A1`,`A2`, …) Form the Kronecker product of two or more matrices.

This is defined block by block as

c = [ a(i,j)*b ]

For example:

kron (1:4, ones (3, 1)) ⇒ 1 2 3 4 1 2 3 4 1 2 3 4

If there are more than two input arguments

`A1`,`A2`, …,`An`the Kronecker product is computed askron (kron (

`A1`,`A2`), ...,`An`)Since the Kronecker product is associative, this is well-defined.

**See also:**tensorprod.

- :
`C`=**tensorprod**`(`

¶`A`,`B`,`dimA`,`dimB`) - :
`C`=**tensorprod**`(`

¶`A`,`B`,`dim`) - :
`C`=**tensorprod**`(`

¶`A`,`B`) - :
`C`=**tensorprod**`(`

¶`A`,`B`, "all") - :
`C`=**tensorprod**`(`

¶`A`,`B`, …, "NumDimensionsA",`value`) Compute the tensor product between numeric tensors

`A`and`B`.The dimensions of

`A`and`B`that are contracted are defined by`dimA`and`dimB`, respectively.`dimA`and`dimB`are scalars or equal length vectors that define the dimensions to match up. The matched dimensions of`A`and`B`must have the same number of elements.When only

`dim`is used, it is equivalent to

.`dimA`=`dimB`=`dim`When no dimensions are specified,

. This computes the outer product between`dimA`=`dimB`= []`A`and`B`.Using the

`"all"`

option results in the inner product between`A`and`B`. This requires`size (`

.`A`) == size (`B`)Use the property-value pair with the property name

`"NumDimensionsA"`

when`A`has trailing singleton dimensions that should be transferred to`C`. The specified`value`should be the total number of dimensions of`A`.MATLAB Compatibility: Octave does not currently support the

`"`

syntax for the`property_name`=`value`"`"NumDimensionsA"`

parameter.

- :
`C`=**blkmm**`(`

¶`A`,`B`) Compute products of matrix blocks.

The blocks are given as 2-dimensional subarrays of the arrays

`A`,`B`. The size of`A`must have the form`[m,k,…]`

and size of`B`must be`[k,n,…]`

. The result is then of size`[m,n,…]`

and is computed as follows:for i = 1:prod (size (

`A`)(3:end))`C`(:,:,i) =`A`(:,:,i) *`B`(:,:,i) endfor

- :
`X`=**sylvester**`(`

¶`A`,`B`,`C`) Solve the Sylvester equation.

The Sylvester equation is defined as:

A X + X B = C

The solution is computed using standard LAPACK subroutines.

For example:

sylvester ([1, 2; 3, 4], [5, 6; 7, 8], [9, 10; 11, 12]) ⇒ [ 0.50000, 0.66667; 0.66667, 0.50000 ]