有人知道關於此行爲的文檔嗎?Numpy dot太聰明瞭關於對稱乘法
import numpy as np
A = np.random.uniform(0,1,(10,5))
w = np.ones(5)
Aw = A*w
Sym1 = Aw.dot(Aw.T)
Sym2 = (A*w).dot((A*w).T)
diff = Sym1 - Sym2
diff.max()是靠近機器精度非零,例如4.4E-16。
這(從0的差異)通常很好......在有限精度的世界中,我們不應該感到驚訝。
而且,我猜numpy的是聰明約對稱的產品,以節省拖鞋和確保對稱輸出...
但我對付混沌系統,而這個小差異很快變得明顯時調試 。所以我想知道到底發生了什麼。
因爲你的代碼將會給從運行之間變化的輸出,請出示一個樣本輸出並更清楚地陳述什麼是不希望的輸出。 –
您是否嘗試強制使用雙打('np.float64')? –
@TomdeGeus怎麼樣?無論如何,請注意,我並不在意這種差異是否爲零。我只是想讓這種行爲(顯然來自numpy聰明)解釋。 – Patrick