我想写一个程序,通过迭代一个猜想(Rayleigh商迭代)来找到Hermitian矩阵的特征向量和特征值。我有一个测试矩阵,我知道的特征向量和特征值,但当我运行我的代码,我收到
ValueError: shapes (3,1) and (3,1) not aligned: 1 (dim 1) != 3 (dim 0)
通过将每个分子和分母拆分为单独的变量,我将问题追溯到:
nm=np.dot(np.conj(b1),np.dot(A,b1))
我的代码:
import numpy as np
import numpy.linalg as npl
def eigen(A,mu,b,err):
mu0=mu
mu1=mu+10*err
while mu1-mu > err:
n=np.dot((npl.inv(A-mu*np.identity(np.shape(A)[0]))),b)
d=npl.norm(np.dot((npl.inv(A-(mu*np.identity(np.shape(A)[0])))),b))
b1=n/d
b=b1
nm=np.dot(np.conj(b1),np.dot(A,b1))
dm=np.dot(np.conj(b1),b1)
mu1=nm/dm
mu=mu1
return(mu,b)
A=np.array([[1,2,3],[1,2,1],[3,2,1]])
mu=4
b=np.array([[1],[2],[1]])
err=0.1
eigen(A,mu,b,err)
我相信被输入到np.dot()
函数的变量的维数是错误的,但是我找不到在哪里。在我的调试过程中,所有内容都被拆分并重新命名,我知道这看起来很难阅读。你知道吗
数学问题是形状(3,1)和(3,1)的矩阵乘法。基本上是两个向量。也许你想用转置矩阵来做这个?你知道吗
看看^{} 的文档,看看哪些参数是可以接受的。你知道吗
您使用的变量是形状(3,1),因此是二维数组。你知道吗
另外,这意味着,也可以使用阵列的平面视图,而不是转置第一个矩阵。这样,它的形状(3,)和1-D数组,你会得到内积:
相关问题 更多 >
编程相关推荐