python - Matlab VS Python - eig(A,B) VS sc.linalg.eig(A,B)

标签 python matlab numpy scipy eigenvalue

我有以下矩阵 sigma 和 sigmad:

西格玛:

    1.9958   0.7250
    0.7250   1.3167

西格玛德:

    4.8889   1.1944
    1.1944   4.2361

如果我尝试在 python 中解决广义特征值问题,我会得到:

    d,V = sc.linalg.eig(matrix(sigmad),matrix(sigma))

V:

    -1     -0.5614
    -0.4352    1

如果我尝试解决 g. e.我得到的 matlab 问题:

    [V,d]=eig(sigmad,sigma)

V:

    -0.5897    -0.5278
    -0.2564    0.9400

但 d 确实重合。

最佳答案

特征向量的任何(非零)标量倍数也将是特征向量;只有方向是有意义的,而不是整体正常化。不同的例程使用不同的约定——通常您会看到幅度设置为 1,或者最大值设置为 1 或 -1——并且一些例程出于性能原因甚至不在意保持内部一致。您的两个不同结果是彼此的倍数:

In [227]: sc = array([[-1., -0.5614], [-0.4352,  1.    ]])

In [228]: ml = array([[-.5897, -0.5278], [-0.2564, 0.94]])

In [229]: sc/ml
Out[229]: 
array([[ 1.69577751,  1.06366048],
       [ 1.69734789,  1.06382979]])

所以它们实际上是相同的特征向量。将矩阵视为改变向量的运算符:特征向量是指向该方向的向量不会被矩阵扭曲的特殊方向,特征值是衡量矩阵扩展或收缩向量的因素。

关于python - Matlab VS Python - eig(A,B) VS sc.linalg.eig(A,B),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11691981/

相关文章:

python:将 "5,4,2,4,1,0"转换为 [[5, 4], [2, 4], [1, 0]]

python - 使用 os.scandir() 在 pycharm 中导致 'unresolved attribute reference' 警告

Matlab 类设置方法意外调用

python - 通过索引访问 coo_matrix 时出现类型错误

python - numpy.median.reduceat 的快速替代方案

python - 如何从 SciPy 中的 scipy.stats.distribution 对象获取分布名称?

python - django csrf token 在每个请求上都必须是唯一的吗?

java - Matlab filtfilt()函数在Java中的实现

performance - MATLAB/ Octave : cut a lot of circles from a image

python - Python 中列表理解的多个条件