gpt4 book ai didi

python - 调用 qr_solve 时无法从复数创建 mpf

转载 作者:太空宇宙 更新时间:2023-11-04 03:14:24 24 4
gpt4 key购买 nike

我做了以下导入:

from sympy.matrices import Matrix as sy_matrix
import sympy.mpmath as sy_mp

像这样创建我的矩阵:

sysMat = sy_matrix([[0.0]*sz1]*sz2)       
resVec = sy_matrix([[0.0]]*sz2)

.然后用 python 复数(例如 1.0+1.0j)填充然后调用:

coeffVec = sy_mp.qr_solve(sysMat, resVec)

但是我得到以下异常:

  File "..\RatSMat.py", line 69, in solve
self.coeffVec = sy_mp.qr_solve(self.sysMat, self.resVec)
File "C:\Python27\lib\site-packages\sympy\mpmath\matrices\linalg.py", line 406, in qr_solve
A, b = ctx.matrix(A, **kwargs).copy(), ctx.matrix(b, **kwargs).copy()
File "C:\Python27\lib\site-packages\sympy\mpmath\matrices\matrices.py", line 328, in __init__
A = self.ctx.matrix(args[0].tolist())
File "C:\Python27\lib\site-packages\sympy\mpmath\matrices\matrices.py", line 301, in __init__
self[i, j] = convert(a)
File "C:\Python27\lib\site-packages\sympy\mpmath\ctx_mp_python.py", line 662, in convert
return ctx._convert_fallback(x, strings)
File "C:\Python27\lib\site-packages\sympy\mpmath\ctx_mp.py", line 614, in _convert_fallback
raise TypeError("cannot create mpf from " + repr(x))
TypeError: cannot create mpf from -2.27448396079674e-13*I

它似乎发生在 sympy 在输入之前设置矩阵时,这对我来说似乎很奇怪,因为 I 表示一个 sympy 复杂类型。我想我可能在某处使用了错误的矩阵或输入类型。

最佳答案

问题是 mpmath 不知道如何将 Sympy 对象 I(虚数单位)转换为其表示复数的对象。不过,它可以与 Python 的 j 一起使用,如您所见 in the source .

需要注意的是mpmath ,一个用于高精度浮点计算的库,独立于 Sympy,一个用于符号计算的库。无需定义 Sympy 对象,然后让 mpmath 使用它们。直接使用 mpmath 即可。

import mpmath
mpmath.mp.dps = 50 # 50 digit arithmetic, for demonstration
A = mpmath.matrix([[2+3j, 1], [1, 1]])
b = mpmath.matrix([[1], [1]])
mpmath.qr_solve(A, b)

输出:

(matrix(
[[mpc(real='3.436455137311543569947658013827436034380299778494123e-55', imag='-1.2867118438861911327915233933248665673255859691704302e-55')],
[mpc(real='1.0', imag='-1.1953121943036561823547019562093175737721941131313411e-54')]]), mpf('1.7055229691470039210052256620915903242996742650953353e-54'))

关于python - 调用 qr_solve 时无法从复数创建 mpf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36810785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com