2014-05-15 22 views
1

我正在使用迭代方法來計算向量的值。在每次迭代中,矢量中的值都會改變。經過多次迭代後,值趨於一致。我不想根據迭代次數停止迭代/循環,而是在錯誤率低於特定閾值時停止迭代/循環。當向量上的錯誤率低於閾值時停止迭代

我的矢量Vn元素。 V元素的總和總是1.我正在做的是我保留V的舊副本,然後計算新副本。然後我計算兩個向量之間的差異,如E = V_new - V_old。所有載體都是numpy陣列。所以E這裏保存舊值和新值之間的差異。但是在這一點上,我無法知道如何處理E以及如何使用它來停止循環。我認爲解決這個問題的一種方法是將E的所有元素相加,然後當總和的值低於閾值時停止循環,但是由於第一次迭代中的總和而導致零結果爲零,因爲某些元素是消極的和其他積極的。現在我卡住了!

編輯:我只是想到使用絕對值E

+0

什麼是算法? Scipy和networkx都實現了算法,這些算法完全可以做你在做像pagerank這樣的事情時所要求的。 – Elliott

+0

@Elliott的確是頁面排名。功率迭代。但我需要自己做。我正在實施論文的結果 –

+0

NetworkX隨BSD許可證一起發佈,因此您可以複製/粘貼networkx PageRank例程並對其進行修改以滿足您的需求。 – Elliott

回答

0

不知道如果我的理解,但你不能嘗試:

while abs(E).max() > epsilon: 
相關問題