Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:使用高精度浮点对矩阵求逆_Python_Numpy_Floating Point_Precision_Gmpy - Fatal编程技术网

Python:使用高精度浮点对矩阵求逆

Python:使用高精度浮点对矩阵求逆,python,numpy,floating-point,precision,gmpy,Python,Numpy,Floating Point,Precision,Gmpy,我正在学习一个关于如何在Python中使用多精度算术的教程。 最后,我想要一个具有任意高精度浮点的numpy数组,我需要求逆该矩阵 因此,我们有: 导入系统 将numpy作为np导入 进口gmpy2 打印(系统版本) 打印(np.版本) 打印(gmpy2.version) 还有问题的部分: 打印(np.linalg.pinv(B)) --------------------------------------------------------------------------- Type

我正在学习一个关于如何在Python中使用多精度算术的教程。
最后,我想要一个具有任意高精度浮点的
numpy
数组,我需要求逆该矩阵

因此,我们有:

导入系统 将numpy作为np导入 进口gmpy2 打印(系统版本) 打印(np.版本) 打印(gmpy2.version) 还有问题的部分:

打印(np.linalg.pinv(B))
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在里面
---->1份印刷品(np.linalg.pinv(B))
pinv格式的~/conda envs/Python\u Jupyter/env/lib/python3.6/site-packages/numpy/linalg/linalg.py(a,rcond)
1660(a)资产净值
1661 a=a.共轭()
->1662 u,s,vt=svd(a,0)
1663米=u形[0]
1664 n=vt.shape[1]
svd中的~/conda envs/Python\u Jupyter/env/lib/python3.6/site-packages/numpy/linalg/linalg.py(a,完整矩阵,计算uv)
1402
1403签名='D->DdD'如果isComplexType(t)或'D->DdD'
->1404 u,s,vt=gufunc(a,签名=signature,Extrabj=Extrabj)
1405 u=u.aType(结果t,副本=False)
1406 s=s.astype(\u realType(result),copy=False)
TypeError:没有与指定签名和强制转换匹配的循环
已为ufunc svd_n_s找到

有人知道如何实现我正在努力实现的目标吗?

我已经用
mpmath
成功地用非常精确的数字求逆了一个矩阵,它包含许多内置的数学函数和一个矩阵类。谢谢你的评论

np.linalg
可能在使用
object
dtype的数组时遇到问题,该数组中的元素不是编译代码中使用的数字类型
Symphy
使用
mpmath
进行高精度的数值计算,但我不知道矩阵求逆有什么作用。了解您使用的教程可能会有所帮助,以及此特定任务有多少来自于此。他们真的建议使用
pinv
?在奇异数组上呢?
3.6.10 | packaged by conda-forge | (default, Apr 24 2020, 16:27:41) 
[GCC Clang 9.0.1 ]
1.12.1
<built-in function version>
[[ 1.  1.  1.]
 [ 1.  1.  1.]
 [ 1.  1.  1.]]
[[mpfr('1.0') mpfr('1.0') mpfr('1.0')]
 [mpfr('1.0') mpfr('1.0') mpfr('1.0')]
 [mpfr('1.0') mpfr('1.0') mpfr('1.0')]]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-23-3a70ff54e53d> in <module>
----> 1 print(np.linalg.pinv(B))

~/conda-envs/Python_Jupyter/env/lib/python3.6/site-packages/numpy/linalg/linalg.py in pinv(a, rcond)
   1660     _assertNoEmpty2d(a)
   1661     a = a.conjugate()
-> 1662     u, s, vt = svd(a, 0)
   1663     m = u.shape[0]
   1664     n = vt.shape[1]

~/conda-envs/Python_Jupyter/env/lib/python3.6/site-packages/numpy/linalg/linalg.py in svd(a, full_matrices, compute_uv)
   1402 
   1403         signature = 'D->DdD' if isComplexType(t) else 'd->ddd'
-> 1404         u, s, vt = gufunc(a, signature=signature, extobj=extobj)
   1405         u = u.astype(result_t, copy=False)
   1406         s = s.astype(_realType(result_t), copy=False)

TypeError: No loop matching the specified signature and casting
was found for ufunc svd_n_s