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]]时向我显示不同的答案?
你需要做的是规范你得到的答案.有一个名为Normalize的函数,可以像这样使用:
Normalize /@ {{1, -1}, {1, 1}}
Run Code Online (Sandbox Code Playgroud)

您可以规范化您的特征向量:
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)