Mathematica矩阵对角化

CHM*_*CHM 4 math wolfram-mathematica

我正在考虑矩阵A,使得A = PDP ^ -1.

我使用Mathematica解决这个问题的方法是:

a={{0, -1}, {-1, 0}}
d = DiagonalMatrix[Eigenvalues[a]]
{{-1,0}, {0,1}}
p = Transpose[Eigenvectors[a]]

p.d.Inverse[p]
{{0, -1}, {-1, 0}}
Run Code Online (Sandbox Code Playgroud)

哪个是对的.

问题是,P矩阵不是我预期的.Mathematica生成的矩阵是

p={{1, -1}, {1, 1}}
Run Code Online (Sandbox Code Playgroud)

但我在寻找

p2={{1/Sqrt[2], 1/Sqrt[2]}, {1/Sqrt[2], -(1/Sqrt[2])}}
p2.d.Inverse[p2]
{{0,-1}, {-1,0}}
Run Code Online (Sandbox Code Playgroud)

这也解决了这个问题.有没有办法让我强制Mathematica在执行Transpose [Eigenvectors [a]]时向我显示不同的答案?

C. *_* E. 9

你需要做的是规范你得到的答案.有一个名为Normalize的函数,可以像这样使用:

Normalize /@ {{1, -1}, {1, 1}}
Run Code Online (Sandbox Code Playgroud)

Mathematica图形


acl*_*acl 5

您可以规范化您的特征向量:

a = {{0, -1}, {-1, 0}};
d = DiagonalMatrix[Eigenvalues[a]];
p = Transpose[Normalize /@ Eigenvectors[a]];
Run Code Online (Sandbox Code Playgroud)

所以p你想要的是:

{{1/Sqrt[2], -(1/Sqrt[2])}, {1/Sqrt[2], 1/Sqrt[2]}}
Run Code Online (Sandbox Code Playgroud)