Skip to content

MatrixExp ​

The matrix exponential eA=∑k≥0Ak/k!e^A = \sum_{k \ge 0} A^k / k!, for a square matrix A.

✓ checked against that system · ! checked, with disagreements (hover a chip)Wolfram LanguageMatrixExp!
MatrixExp(A)the matrix exponential of the square matrix A.
SymPyMatrix(A).exp().tolist()
MatrixExp(A, v)eAve^A v: A's matrix exponential applied to the vector v.
SymPylist(Matrix(A).exp() * Matrix(v))
Typed signatures
TypePackageApplies
(matrix, list<number>?) -> list<number> | matrixanalyticalways

Domain: Linear algebra

Details
  • NOT Exp of a matrix, which broadcasts element-wise instead -- see that entry's divergence note.
  • Exact where the structure gives one: a diagonal A reduces to elementwise Exp on the diagonal; a 2×2 A reduces to a closed form in Cosh, Sinh and Sqrt of its trace and determinant (which also covers every 2×2 nilpotent and repeated-eigenvalue case, and -- written to recognize a provably negative discriminant -- every 2×2 rotation generator, in Cos and Sin instead); a nilpotent A of any size, with exact entries, reduces to its truncated Taylor series.
  • Otherwise numeric only, produced under N(): scaling-and-squaring, in double precision.
  • Rejects a non-square argument, same as MatrixRank's siblings Inverse, MatrixPower, and Determinant.
  • MatrixExp(A, v) computes eAe^A first (via whichever path above applies) and multiplies by v; it is not a matrix-free method, just a shorter call.

Examples

3 more kept as data, checked against the oracles
Basic #

The 2×2 closed form -- exact, not decimalized

live ↗
InMatrixExp([[0,1],[1,0]])\mathrm{MatrixExp}(\bigl\lbrack\bigl\lbrack0, 1\bigr\rbrack, \bigl\lbrack1, 0\bigr\rbrack\bigr\rbrack)Out[[cosh⁡(1),sinh⁡(1)],[sinh⁡(1),cosh⁡(1)]]\bigl\lbrack\bigl\lbrack\cosh(1), \sinh(1)\bigr\rbrack, \bigl\lbrack\sinh(1), \cosh(1)\bigr\rbrack\bigr\rbrack

Known value · mpmath 1.3.0 expm

The exponential of the zero matrix is the identity

live ↗
InMatrixExp([[0,0],[0,0]])\mathrm{MatrixExp}(\bigl\lbrack\bigl\lbrack0, 0\bigr\rbrack, \bigl\lbrack0, 0\bigr\rbrack\bigr\rbrack)Out[[1,0],[0,1]]\bigl\lbrack\bigl\lbrack1, 0\bigr\rbrack, \bigl\lbrack0, 1\bigr\rbrack\bigr\rbrack

A diagonal matrix exponentiates entry by entry

live ↗
InMatrixExp([[1,0],[0,2]])\mathrm{MatrixExp}(\bigl\lbrack\bigl\lbrack1, 0\bigr\rbrack, \bigl\lbrack0, 2\bigr\rbrack\bigr\rbrack)Out[[e,0],[0,e2]]\bigl\lbrack\bigl\lbrack e, 0\bigr\rbrack, \bigl\lbrack0, e^2\bigr\rbrack\bigr\rbrack
Scope #

A nilpotent matrix: I+AI + A, since A2=0A^2 = 0

live ↗
InMatrixExp([[0,1],[0,0]])\mathrm{MatrixExp}(\bigl\lbrack\bigl\lbrack0, 1\bigr\rbrack, \bigl\lbrack0, 0\bigr\rbrack\bigr\rbrack)Out[[1,1],[0,1]]\bigl\lbrack\bigl\lbrack1, 1\bigr\rbrack, \bigl\lbrack0, 1\bigr\rbrack\bigr\rbrack

Known value · mpmath 1.3.0 expm

A diagonal matrix: exp of each diagonal entry

live ↗
InMatrixExp([[1,0,0],[0,2,0],[0,0,3]])\mathrm{MatrixExp}(\bigl\lbrack\bigl\lbrack1, 0, 0\bigr\rbrack, \bigl\lbrack0, 2, 0\bigr\rbrack, \bigl\lbrack0, 0, 3\bigr\rbrack\bigr\rbrack)Out[[e,0,0],[0,e2,0],[0,0,e3]]\bigl\lbrack\bigl\lbrack e, 0, 0\bigr\rbrack, \bigl\lbrack0, e^2, 0\bigr\rbrack, \bigl\lbrack0, 0, e^3\bigr\rbrack\bigr\rbrack

Known value · mpmath 1.3.0 expm

A 3×3 matrix with no diagonal, nilpotent, or 2×2 structure to exploit: numeric only, via scaling-and-squaring

live ↗
InN(MatrixExp([[1,2,3],[4,5,6],[7,8,10]]))N(\mathrm{MatrixExp}(\bigl\lbrack\bigl\lbrack1, 2, 3\bigr\rbrack, \bigl\lbrack4, 5, 6\bigr\rbrack, \bigl\lbrack7, 8, 10\bigr\rbrack\bigr\rbrack))Out[[1 892 793.801 966 466 5,2 319 804.348 433 83,2 921 688.794 284 903 4],[4 267 596.877 957 099,5 230 361.132 647 167,6 587 401.226 390 927],[7 065 281.732 605 146,8 659 197.695 551 049,10 905 868.064 094 879]]\bigl\lbrack\bigl\lbrack1\,892\,793.801\,966\,466\,5, 2\,319\,804.348\,433\,83, 2\,921\,688.794\,284\,903\,4\bigr\rbrack, \bigl\lbrack4\,267\,596.877\,957\,099, 5\,230\,361.132\,647\,167, 6\,587\,401.226\,390\,927\bigr\rbrack, \bigl\lbrack7\,065\,281.732\,605\,146, 8\,659\,197.695\,551\,049, 10\,905\,868.064\,094\,879\bigr\rbrack\bigr\rbrack

Known value · mpmath 1.3.0 expm

A Jordan block: eI+N=e (I+N)e^{I + N} = e\,(I + N)

live ↗
InMatrixExp([[1,1],[0,1]])\mathrm{MatrixExp}(\bigl\lbrack\bigl\lbrack1, 1\bigr\rbrack, \bigl\lbrack0, 1\bigr\rbrack\bigr\rbrack)Out[[e,e],[0,e]]\bigl\lbrack\bigl\lbrack e, e\bigr\rbrack, \bigl\lbrack0, e\bigr\rbrack\bigr\rbrack

Applied to a vector, eAve^A v: computed as eAe^A (via whichever closed form applies) times vv, not a matrix-free method

live ↗
InMatrixExp([[0,1],[0,0]],[1,1])\mathrm{MatrixExp}(\bigl\lbrack\bigl\lbrack0, 1\bigr\rbrack, \bigl\lbrack0, 0\bigr\rbrack\bigr\rbrack, \bigl\lbrack1, 1\bigr\rbrack)Out[2,1]\bigl\lbrack2, 1\bigr\rbrack

A 3×33\times3 nilpotent generator: the exponential series truncates exactly, past the 2×22\times2 case.

live ↗
InMatrixExp([[0,1,0],[0,0,1],[0,0,0]])\mathrm{MatrixExp}(\bigl\lbrack\bigl\lbrack0, 1, 0\bigr\rbrack, \bigl\lbrack0, 0, 1\bigr\rbrack, \bigl\lbrack0, 0, 0\bigr\rbrack\bigr\rbrack)Out[[1,1,12],[0,1,1],[0,0,1]]\bigl\lbrack\bigl\lbrack1, 1, \frac{1}{2}\bigr\rbrack, \bigl\lbrack0, 1, 1\bigr\rbrack, \bigl\lbrack0, 0, 1\bigr\rbrack\bigr\rbrack

Known value · mpmath 1.3.0 expm

A Jordan block (repeated eigenvalue 2): e2(I+N)e^{2}(I+N), not a diagonal exponential.

live ↗
InMatrixExp([[2,1],[0,2]])\mathrm{MatrixExp}(\bigl\lbrack\bigl\lbrack2, 1\bigr\rbrack, \bigl\lbrack0, 2\bigr\rbrack\bigr\rbrack)Out[[e2,e2],[0,e2]]\bigl\lbrack\bigl\lbrack e^2, e^2\bigr\rbrack, \bigl\lbrack0, e^2\bigr\rbrack\bigr\rbrack

Known value · mpmath 1.3.0 expm

live ↗
InMatrixExp([[a,b],[0,c]])\mathrm{MatrixExp}(\bigl\lbrack\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack0, c\bigr\rbrack\bigr\rbrack)Out[[((a−c)sinh⁡(((a+c)2−4ac)1/2/2)(a+c)2−4ac+cosh⁡(12((a+c)2−4ac)1/2))e(a+c)/2,2bsinh⁡(((a+c)2−4ac)1/2/2)e(a+c)/2(a+c)2−4ac],[0,((c−a)sinh⁡(((a+c)2−4ac)1/2/2)(a+c)2−4ac+cosh⁡(12((a+c)2−4ac)1/2))e(a+c)/2]]\bigl\lbrack\bigl\lbrack(\frac{(a-c)\sinh(((a+c)^2-4ac)^{1/2}/2)}{\sqrt{(a+c)^2-4ac}}+\cosh(\frac{1}{2}((a+c)^2-4ac)^{1/2}))e^{(a+c)/2}, \frac{2b\sinh(((a+c)^2-4ac)^{1/2}/2)e^{(a+c)/2}}{\sqrt{(a+c)^2-4ac}}\bigr\rbrack, \bigl\lbrack0, (\frac{(c-a)\sinh(((a+c)^2-4ac)^{1/2}/2)}{\sqrt{(a+c)^2-4ac}}+\cosh(\frac{1}{2}((a+c)^2-4ac)^{1/2}))e^{(a+c)/2}\bigr\rbrack\bigr\rbrack
live ↗
InMatrixExp(DiagonalMatrix([a,b,c]))\mathrm{MatrixExp}(\mathrm{DiagonalMatrix}(\bigl\lbrack a, b, c\bigr\rbrack))Out[[ea,0,0],[0,eb,0],[0,0,ec]]\bigl\lbrack\bigl\lbrack e^{a}, 0, 0\bigr\rbrack, \bigl\lbrack0, e^{b}, 0\bigr\rbrack, \bigl\lbrack0, 0, e^{c}\bigr\rbrack\bigr\rbrack
live ↗
InMatrixExp(IdentityMatrix(3))\mathrm{MatrixExp}(\mathrm{IdentityMatrix}(3))Out[[e,0,0],[0,e,0],[0,0,e]]\bigl\lbrack\bigl\lbrack e, 0, 0\bigr\rbrack, \bigl\lbrack0, e, 0\bigr\rbrack, \bigl\lbrack0, 0, e\bigr\rbrack\bigr\rbrack
Applications #

A skew-symmetric generator gives a rotation matrix: the 2×2 closed form recognizes its purely imaginary eigenvalues and reduces straight to cos⁡1\cos 1 and sin⁡1\sin 1, not cosh⁡i\cosh i and sinh⁡i\sinh i

live ↗
InMatrixExp([[0,1],[−1,0]])\mathrm{MatrixExp}(\bigl\lbrack\bigl\lbrack0, 1\bigr\rbrack, \bigl\lbrack-1, 0\bigr\rbrack\bigr\rbrack)Out[[cos⁡(1),sin⁡(1)],[−sin⁡(1),cos⁡(1)]]\bigl\lbrack\bigl\lbrack\cos(1), \sin(1)\bigr\rbrack, \bigl\lbrack-\sin(1), \cos(1)\bigr\rbrack\bigr\rbrack
Properties #
live ↗
InMatrixExp(a)=MatrixFunction(Exp,a)\mathrm{MatrixExp}(a)=\mathrm{MatrixFunction}(\mathrm{Exp}, a)OutTrue\mathrm{True}
Possible issues #

Rejects a non-square argument

live ↗

A generic matrix with no closed form stays symbolic without N() — use N(MatrixExp(...)) for a numeric answer.

live ↗
InMatrixExp([[1,2,3],[4,5,6],[7,8,10]])\mathrm{MatrixExp}(\bigl\lbrack\bigl\lbrack1, 2, 3\bigr\rbrack, \bigl\lbrack4, 5, 6\bigr\rbrack, \bigl\lbrack7, 8, 10\bigr\rbrack\bigr\rbrack)OutMatrixExp([[1,2,3],[4,5,6],[7,8,10]])\mathrm{MatrixExp}(\bigl\lbrack\bigl\lbrack1, 2, 3\bigr\rbrack, \bigl\lbrack4, 5, 6\bigr\rbrack, \bigl\lbrack7, 8, 10\bigr\rbrack\bigr\rbrack)
Neat examples #

Euler's identity for matrices: rotation by π\pi is −I-I

live ↗
InMatrixExp([[0,−π],[π,0]])\mathrm{MatrixExp}(\bigl\lbrack\bigl\lbrack0, -π\bigr\rbrack, \bigl\lbrack π, 0\bigr\rbrack\bigr\rbrack)Out[[−1,0],[0,−1]]\bigl\lbrack\bigl\lbrack-1, 0\bigr\rbrack, \bigl\lbrack0, -1\bigr\rbrack\bigr\rbrack
About
Examples21
Checked againstWolfram Language 18 agree3 differSageMath 13 agree4 errorSymPy 12 agree7 error
CrosswalkWolfram LanguageSymPy ×2

Implementation

mappedsagepackages/oracle/src/mappings.ts
mappedsympypackages/oracle/src/mappings.ts
mappedsympypackages/oracle/src/mappings.ts

Applied to a vector, e^A v, flattened as ours is.

See also: Exp, MatrixPower, Inverse, Determinant