2016-01-07 149 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