西皮.利纳格.艾格左/右特征向量不与每个oth正交

2024-09-26 04:56:30 发布

您现在位置:Python中文网/ 问答频道 /正文

对于矩阵的特征分解,左、右特征向量应相互正交。使用西皮.利纳格.艾格我把这个问题作为标准特征值问题和一般特征值问题来解决。标准特征值问题返回的左/右特征向量相互正交,通过计算它们的点积进行验证。对于一般特征值问题,返回的左/右特征向量互不正交。在

小结:

左/右e矢量互不正交:

evals, evecs_l, evecs_r = scipy.linalg.eig(M, N, left=True, right=True)

左/右e矢量相互正交:

^{pr2}$

示例:

import numpy as np
import scipy.linalg

M = np.array([[1., 2.],
              [4., 5.]])

N = np.array([[0.2, 0.1],
              [0.7, 0.8]])


evals, evecs_l, evecs_r = scipy.linalg.eig(M,N,left=True,right=True)

np.set_printoptions(precision=3,linewidth=200)
print('inner product: GEP')
I = evecs_l.conj().T @ evecs_r
for i in range(I.shape[1]):
    print(I[i,:])


evals, evecs_l, evecs_r = scipy.linalg.eig(np.linalg.inv(N) @ M,left=True,right=True)

print('inner product: SEP')
I = evecs_l.conj().T @ evecs_r
np.set_printoptions(precision=3,linewidth=200)
for i in range(I.shape[1]):
    print(I[i,:])

退货:

inner product: GEP
[-0.153 -0.818]
[0.932 0.907]
inner product: SEP
[0.721 0.   ]
[0.    0.721]

所以,我想知道是否有人能深入了解这种行为。我是否错误地解释了结果或预期行为?在

系统: Python3.6.4、numpy 1.14.0、scipy 1.0.0、OS X 10.13.3


Tags: righttrue标准npscipyproductleftinner
1条回答
网友
1楼 · 发布于 2024-09-26 04:56:30

在正则特征值分解中,左、右特征向量正交的陈述可以重述为乘积evecs_l.conj().T @ evecs_r是对角的。对于广义特征值问题Mx = λNx,这种说法通常是不正确的。在那里,它变成了乘积evecs_l.conj().T @ N @ evecs_r是对角线的。(我们需要写evecs_l.conj().T,而不仅仅是evecs_l,因为scipy.linalg.eig返回矩阵列中左特征向量的共轭。)

例如

In [38]: M
Out[38]: 
array([[ 1.,  2.],
       [ 4.,  5.]])

In [39]: N
Out[39]: 
array([[ 0.2,  0.1],
       [ 0.7,  0.8]])

In [40]: evals, evecs_l, evecs_r = scipy.linalg.eig(M, N, left=True, right=True)
    ...: 

In [41]: np.set_printoptions(precision=3, linewidth=200, suppress=True)

In [42]: evecs_l.conj().T @ N @ evecs_r
Out[42]: 
array([[ 0.701, -0.   ],
       [ 0.   ,  0.08 ]])

相关问题 更多 >