Python 浮点型Numpy矩阵逆

Python 浮点型Numpy矩阵逆,python,python-3.x,numpy,matrix-inverse,Python,Python 3.x,Numpy,Matrix Inverse,我得到了一个由128个值组成的矩阵'x',我得到了下一个错误: > q = (inv(xt * x) * xt) * n > array type float128 is unsupported in linalg 其中xt是x和n的转置矩阵。使用该矩阵的所有其他操作都正确处理,如转置或矩阵乘积 是的,在这种情况下我需要float128,否则结果将与我们作为参考的更接近实际值的结果不同。numpy中没有float128数据类型。支持的numpy数据类型可在此处找到: 如果您需要解决

我得到了一个由128个值组成的矩阵'x',我得到了下一个错误:

> q = (inv(xt * x) * xt) * n
> array type float128 is unsupported in linalg
其中xt是x和n的转置矩阵。使用该矩阵的所有其他操作都正确处理,如转置或矩阵乘积


是的,在这种情况下我需要float128,否则结果将与我们作为参考的更接近实际值的结果不同。

numpy中没有float128数据类型。支持的numpy数据类型可在此处找到:


如果您需要解决方法,您可以尝试使用numpy C API中的
NPY_LONGDOUBLE
,这个错误消息对我来说似乎很简单:numpy中的float128支持不完整或不一致。@xnx是的,我需要一个解决方法:p这听起来有点像。如果您要根据预期的参考结果测试计算出的浮点结果,那么无论如何都不能期望精确相等,因此您需要在测试中建立一个容差;再多的精确性也无法消除这种需求。(当然,公差应该是什么是另一个困难且依赖于任务的问题。)你确定需要额外的精度吗?另一条评论:从你展示的代码来看,看起来你在解决一个最小二乘问题。是否有任何理由不使用现有的NumPy和SciPy例程进行最小二乘?与国产版本相比,这些版本在数量上可能更稳健。(特别是,实际上反转
xt*x
并不是解决最小二乘问题的最有效或最稳定的方法。)相关:。直接反转矩阵几乎从来都不是一个好主意。这取决于平台。在OSX上,有
numpy.float128
dtype,尽管它没有提供您可能希望的IEEE 754二进制128格式。它对应于标准的80位x87扩展精度类型,具有6个字节的填充。(类似地,在Linux上通常有
numpy.float96
dtype。)Nathaniel Smith的精彩回答中有更多信息:这是一篇很好的帖子,它很好地解释了事情。似乎我的答案并没有真正回答这个问题,但如果
longdouble
是解决问题的方法,那么我可以指出一个答案。我怀疑OP已经在使用
np.longdouble
。这就是问题的原因!对
np.longdouble
类型的支持并没有深入到核心线性代数运算。