我试图将我从eig函数获得的特征向量乘以我的原始矩阵,但这给了我一个“矩阵未对齐”的错误。这是我要运行的代码:
import numpy.matlib
import numpy as np
from scipy.linalg import eig
#M is a previously defined NxN matrix
evals, evecs = eig(Mnp, left=False,right=True)
def chop(expr, tol=0.0000000009):
expr.real[abs(expr.real) < tol] = 0.0
expr.imag[abs(expr.imag) < tol] = 0.0
return expr
evecs = chop(evecs)
lamda=evals[1]
mM=np.matrix(M)
mm=np.matrix(mM-lamda*np.identity(N))
for x in np.where(evals==lamda)[0]:
print(mm*np.matrix(evecs[:,x]))
这有什么问题?如何强制特征向量以正确的形式输出?谢谢!
答案 0 :(得分:0)
import numpy.matlib
import numpy as np
from scipy.linalg import eig
N = 13
Mnp = np.random.random((n,n))
evals, evecs = eig(Mnp, left=False,right=True)
def chop(expr, tol=0.0000000009):
expr.real[abs(expr.real) < tol] = 0.0
expr.imag[abs(expr.imag) < tol] = 0.0
return expr
evecs = chop(evecs)
lamda=evals[1]
mM=np.matrix(M)
mm=np.matrix(mM-lamda*np.identity(N))
for x in np.where(evals==lamda)[0]:
print(np.matmul(mm,evecs[:,x]))
这就是我想做的。您只需要使用np.matmul(A,b),其中A.shape [1] == b.shape [0]返回True。您也可以使用np.dot(A,b)。