gpt4 book ai didi

python - 有时在 python 和 mathematica 中计算的特征向量有相反的符号有人知道为什么吗?

转载 作者:太空狗 更新时间:2023-10-30 00:52:43 28 4
gpt4 key购买 nike

我正在尝试使用 python 计算许多 3x3 矩阵的特征向量。我在 python 中的代码基于 Mathematica 的代码,它使用 Eigenvector[] 函数。我尝试使用 numpy 和 scipy 中的 eig() 函数,大多数时候在 mathematica 和 python 中计算的特征向量是相同的。但是,在某些情况下,python 中计算的特征向量与 mathematica 中计算的特征向量符号相反。

我已经尝试使用 numpy 和 scipy 来计算导致相同问题的特征向量。

Python代码

    _, evec = eig(COVMATRIX)

数学代码

    evec = Eigenvectors[COVMATRIX]

请注意,在 Mathematica 中,特征向量沿行排列,而在 python 中,特征向量沿着矩阵中的列。

给定

    COVMATRIX = [[2.9296875e-07, 0.0, 2.09676562e-10], 
[0.0, 2.9296875e-07, 1.5842226562e-09],
[2.09676562e-10, 1.58422265e-09, 5.85710e-11]]

来自 python 的特征向量是

    [[-7.15807155e-04,  9.91354763e-01, -1.31206788e-01],
[-5.40831983e-03, -1.31208740e-01, -9.91340011e-01],
[9.99985119e-01, 2.21572611e-13, -5.45548378e-03]]

mathematica 的特征向量是

    {{-0.131207, -0.99134, -0.00545548}, 
{0.991355, -0.131209, 2.6987*10^-13},
{-0.000715807, -0.00540832, 0.999985}}

在这种情况下,特征向量在 mathematica 和 python 之间是相同的,但是......

给定

    COVMATRIX = [[2.9296875e-07, 0.0, 6.3368875e-10],
[0.0, 2.9296875e-07, 1.113615625e-09],
[6.3368875e-10, 1.113615625e-09, 5.0957159954e-11]]

来自 python 的特征向量是

    [[ 2.16330513e-03,  8.69137041e-01,  4.94566602e-01],  
[ 3.80169349e-03, -4.94571334e-01, 8.69128726e-01],
[-9.99990434e-01, 1.11146084e-12, 4.37410133e-03]]

但是python中的特征向量与下面mathematica中的特征向量符号相反

    {{-0.494567, -0.869129, -0.0043741},  
{0.869137, -0.494571, 1.08198*10^-12},
{-0.00216331, -0.00380169, 0.99999}}

最佳答案

如果 v 是特征向量,则根据定义:Av = lambda * v

因此,如果 v 是一个特征向量,那么 -v 也是一个特征向量,因为:A * (-v) = - A*v = -lambda * v= lambda * (-v)

所以这两种方法都是正确的。特征向量的目标是找到非共线向量(如果你想对角化你的矩阵,这很有用)。所以他们给你一个向量还是相反的向量都没有关系。

关于python - 有时在 python 和 mathematica 中计算的特征向量有相反的符号有人知道为什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56689422/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com