好的,所以我在python中使用power方法。
基本上,等式围绕矩阵A乘以向量(y),如下所示:
for i in range(0, 100):
y = mult(matrix,y)
y = scalarMult(y, 1.0/y[0][0])
然后将向量y乘以1 /(y中的第一个元素)。现在,如果矩阵稀疏或恰好在正确的位置有零,那么a中的第一个元素将得到零。我的谷歌搜索技巧都没有对功率方法进行修改以避免这种情况。
对于那些感兴趣的人,我正在尝试求解矩阵的特征值;只要没有太多的零,我的代码就可以工作。
答案 0 :(得分:3)
不是按矢量的第一个元素划分,而是可以除以其中的一个范数。 例如,如果使用第二个范数,则向量的长度将始终为1.
norm = sum(e**2 for e in y)**0.5
当向量为0(所有元素为0)时,向量的范数仅为零,因此不应该除以0。