我試圖模擬一個特定的物理系統。爲了傳播解決方案,我需要能夠乘以描述系統每個部分的行列式= 1的矩陣。在低於T(變量)的代碼與DET(T)= 1 2維矩陣,我只是表示區域號碼,其餘是不相關的。增加numpy.dot(蟒蛇)的精度
當我爲超過30個區域的系統運行此代碼時,最終的Msys不再具有行列式= 1。我在整個計算過程中檢查了Msys的行列式的值,在前幾次迭代中爲1,開始分歧。我在創建數組T時嘗試過把dtype = float64看作是否會提高精度並阻止它分解,但我沒有看到任何改進。
有什麼辦法,我可以編寫代碼來避免錯誤累積或方法可以讓我增加小數numpy的存儲量,從而使可忽略不計與100+地區系統的錯誤。
for i in range(n):
if i == 0:
Msys = T(L[i],i,k)
else:
Msys = numpy.dot(T(L[i]-L[i-1],i,k), Msys)
return Msys
如果它是一個選項,[sympy(HTTP://計算器。 COM /問題/ 6876377/numpy的,任意精度線性代數)具有任意精度 – jterrace
謝謝!結束使用mpmath這是sympy的一部分。 – Zykx