首页 > 解决方案 > 如何在 Mathematica 中找到矩阵指数?

问题描述

我正在尝试采用倾斜对称旋转矩阵的矩阵指数,S. 我希望结果是罗德里格斯的旋转公式I + sin(theta)*S + (1-cos(theta))*S*S。然而,Mathematica返回的东西看起来不像那个公式,它的结果是试图取负数的平方根。

这是我的代码:

S = { { 0, -omegaz, omegay }, {omegaz, 0, -omegax}, {-omegay, omegax, 0} };
FullSimplify[MatrixExp[S]]

这导致 Mathematica:

结果

难道我做错了什么?

标签: wolfram-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正确计算了旋转矩阵。


推荐阅读