如何避免看似不可避免的零除

时间:2010-11-09 08:41:58

标签: python math

好的,所以我在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中的第一个元素将得到零。我的谷歌搜索技巧都没有对功率方法进行修改以避免这种情况。

对于那些感兴趣的人,我正在尝试求解矩阵的特征值;只要没有太多的零,我的代码就可以工作。

1 个答案:

答案 0 :(得分:3)

不是按矢量的第一个元素划分,而是可以除以其中的一个范数。 例如,如果使用第二个范数,则向量的长度将始终为1.

norm = sum(e**2 for e in y)**0.5

当向量为0(所有元素为0)时,向量的范数仅为零,因此不应该除以0。