torch.linalg.matrix_exp — PyTorch 2.7 documentation (original) (raw)

torch.linalg.matrix_exp(A) → Tensor

Computes the matrix exponential of a square matrix.

Letting K\mathbb{K} be R\mathbb{R} or C\mathbb{C}, this function computes the matrix exponential of A∈Kn×nA \in \mathbb{K}^{n \times n}, which is defined as

matrix_exp(A)=∑k=0∞1k!Ak∈Kn×n.\mathrm{matrix\_exp}(A) = \sum_{k=0}^\infty \frac{1}{k!}A^k \in \mathbb{K}^{n \times n}.

If the matrix AA has eigenvalues λi∈C\lambda_i \in \mathbb{C}, the matrix matrix_exp(A)\mathrm{matrix\_exp}(A) has eigenvalues eλi∈Ce^{\lambda_i} \in \mathbb{C}.

Supports input of bfloat16, float, double, cfloat and cdouble dtypes. Also supports batches of matrices, and if A is a batch of matrices then the output has the same batch dimensions.

Parameters

A (Tensor) – tensor of shape (*, n, n) where * is zero or more batch dimensions.

Example:

A = torch.empty(2, 2, 2) A[0, :, :] = torch.eye(2, 2) A[1, :, :] = 2 * torch.eye(2, 2) A tensor([[[1., 0.], [0., 1.]],

    [[2., 0.],
     [0., 2.]]])

torch.linalg.matrix_exp(A) tensor([[[2.7183, 0.0000], [0.0000, 2.7183]],

     [[7.3891, 0.0000],
      [0.0000, 7.3891]]])

import math A = torch.tensor([[0, math.pi/3], [-math.pi/3, 0]]) # A is skew-symmetric torch.linalg.matrix_exp(A) # matrix_exp(A) = [[cos(pi/3), sin(pi/3)], [-sin(pi/3), cos(pi/3)]] tensor([[ 0.5000, 0.8660], [-0.8660, 0.5000]])