Python:使用高精度浮点对矩阵求逆
我正在学习一个关于如何在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
最后,我想要一个具有任意高精度浮点的
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