2010-11-09 39 views
2

好的,所以我在python中執行power方法。如何避免一個看似不可避免的除數爲零

基本上,方程圍繞着相乘的矩陣A通過這樣的矢量(y)的:

for i in range(0, 100): 

    y = mult(matrix,y) 

    y = scalarMult(y, 1.0/y[0][0]) 

然後,通過1 /(第一元件沿y)相乘,向量y。現在,如果矩陣是稀疏的或在恰當的位置有一個零,那麼對於第一個元素,您將得到一個零。我的谷歌搜索技巧沒有對權力方法進行修改以避免這種情況。

對於那些有興趣的人,我試圖求解矩陣的特徵值;並且只要沒有太多的零,我的代碼就可以工作。

+1

如果您可以使用第三方庫,請嘗試現有解決方案,如[numpy.linalg.eig](http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.eig.html#改爲numpy.linalg.eig)。 – kennytm 2010-11-09 08:48:04

+1

在旁註:你知道像numpy和scipy這樣的軟件包嗎?在你的情況下,numpy.linalg.eig可能是有趣的。 – 2010-11-09 08:48:55

回答

3

除了用矢量的第一個元素除外,你可以用它的一個規範除。 例如如果使用第二範數,該矢量的長度始終爲1

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

向量的範數是零僅當矢量爲0(具有所有0個元素),所以被0除不應該發生。