当我试图用python3中的以下代码求解一个由三个方程组成的方程组时,我总是出错:import sympy
from sympy import Symbol, solve, nsolve
x = Symbol('x')
y = Symbol('y')
z = Symbol('z')
eq1 = x - y + 3
eq2 = x + y
eq3 = z - y
print(nsolve( (eq1, eq2, eq3), (x,y,z), (-50,50)))
以下是错误消息:Traceback (most recent call last):
File
"/usr/lib/python3/dist-packages/mpmath/calculus/optimization.py", line
928, in findroot
fx = f(*x0)
TypeError: () missing 1 required positional argument:
'_Dummy_15'
在处理上述异常时,发生了另一个异常:Traceback (most recent call last): File "", line 1, in
File "", line 12, in File
"/usr/lib/python3/dist-packages/sympy/solvers/solvers.py", line 2498,
in nsolve
x = findroot(f, x0, J=J, **kwargs)
File
"/usr/lib/python3/dist-packages/mpmath/calculus/optimization.py", line
931, in findroot
fx = f(x0[0])
TypeError: () missing 2 required positional arguments:
'_Dummy_14' and '_Dummy_15'
奇怪的是,如果我只解前两个方程,错误信息就会消失——把代码的最后一行改为
^{pr2}$
输出:exec(open('bug444.py').read())
[-1.5]
[ 1.5]
我很困惑,非常感谢你的帮助!在
一些附加信息:我在ubuntu14.04上使用python3.4.0+sympy0.7.6-3。我在python2中也遇到了同样的错误
我可以用
求解([eq1,eq2,eq3],[x,y,z])
但这个系统只是一个玩具的例子;在实际应用中,系统是非线性的,我需要更高的精度,我不知道如何调整求解的精度,而对于nsolve,我可以使用nsolve(... , prec=100)
谢谢!在