2016-01-07 148 views
1

我float128值矩陣「x」和我收到的下一個錯誤時:NumPy的矩陣求逆與float128型

> q = (inv(xt * x) * xt) * n 
> array type float128 is unsupported in linalg 

凡XT是調換X和n等float128矩陣。所有使用該矩陣的其他操作都可以正確處理,如轉置或矩陣產品。

是的,我需要float128這種情況下,否則結果是不同於接近我們正在參考的實際值的結果。

+0

此錯誤消息似乎非常簡單對我說:在與NumPy float128支持不完整或一致。 – xnx

+0

@xnx這是,我需要一個解決方法:p – gerosalesc

+0

這聽起來有點像[XY問題](http://xyproblem.info)。如果您正在根據預期的參考結果測試計算的浮點結果,那麼無論如何您都不能指望完全相等,因此您需要在測試中構建一個容差;沒有額外的精度會使這種需求消失。 (當然,寬容應該是另一個困難和任務相關的問題。)你確定*你需要額外的精度嗎? –

回答

0

numpy中沒有float128數據類型。支持的numpy的數據類型可以在這裏找到:http://docs.scipy.org/doc/numpy-1.10.1/user/basics.types.html

如果你需要一個工作,你身邊可以嘗試使用NPY_LONGDOUBLE從numpy的C API http://docs.scipy.org/doc/numpy-1.10.0/reference/c-api.dtype.html

+3

這取決於平臺。在OS X上,*有*'numpy.float128' dtype,儘管它沒有給出您可能希望的IEEE 754 binary128格式。它對應於標準的80位x87擴展精度類型,有6個字節的填充。 (同樣,在Linux上通常有'numpy.float96' dtype。) –

+0

更多信息在這裏從納撒尼爾史密斯在這裏的優秀答案:http://stackoverflow.com/a/17023995/270986 –

+0

這是一個很好的職位,它解釋得很好。看起來我的回答並沒有真正回答這個問題,但如果'longdouble'是要走的路,可以指出一種回答方法。 – veda905