如何在 Mathematica 中找到矩阵指数?
How to find the matrix exponential in Mathematica?
我正在尝试获取斜对称旋转矩阵的矩阵指数,S
。我希望结果是 Rodrigues 的旋转公式 I + sin(theta)*S + (1-cos(theta))*S*S
。但是,Mathematica returns 看起来不像那个公式,它的结果是试图取负数的平方根。
这是我的代码:
S = { { 0, -omegaz, omegay }, {omegaz, 0, -omegax}, {-omegay, omegax, 0} };
FullSimplify[MatrixExp[S]]
Mathematica 的结果:
我是不是做错了什么?
结果一样
在 Rodrigues 的旋转公式中,偏斜矩阵是由单位向量构成的,因此您有以下假设:
1 == omegax^2 + omegay^2 + omegaz^2
并且您需要使用:
MatrixExp[theta S]
如果你 运行:
rod = IdentityMatrix[3] + Sin[theta] S + (1 - Cos[theta]) MatrixPower[S, 2]
rod = FullSimplify[rod, Assumptions -> {omegax^2 + omegay^2 + omegaz^2 == 1}]
expS = FullSimplify[MatrixExp[theta S], Assumptions -> {omegax^2 + omegay^2 + omegaz^2 == 1}]
rod == b
(* True *)
因此,Mathematica 正确计算了旋转矩阵。
我正在尝试获取斜对称旋转矩阵的矩阵指数,S
。我希望结果是 Rodrigues 的旋转公式 I + sin(theta)*S + (1-cos(theta))*S*S
。但是,Mathematica returns 看起来不像那个公式,它的结果是试图取负数的平方根。
这是我的代码:
S = { { 0, -omegaz, omegay }, {omegaz, 0, -omegax}, {-omegay, omegax, 0} };
FullSimplify[MatrixExp[S]]
Mathematica 的结果:
我是不是做错了什么?
结果一样
在 Rodrigues 的旋转公式中,偏斜矩阵是由单位向量构成的,因此您有以下假设:
1 == omegax^2 + omegay^2 + omegaz^2
并且您需要使用:
MatrixExp[theta S]
如果你 运行:
rod = IdentityMatrix[3] + Sin[theta] S + (1 - Cos[theta]) MatrixPower[S, 2]
rod = FullSimplify[rod, Assumptions -> {omegax^2 + omegay^2 + omegaz^2 == 1}]
expS = FullSimplify[MatrixExp[theta S], Assumptions -> {omegax^2 + omegay^2 + omegaz^2 == 1}]
rod == b
(* True *)
因此,Mathematica 正确计算了旋转矩阵。