Я постоянно получаю ошибки, когда я пытался решить систему трех уравнений с помощью следующего кода в Python3:питон nsolve/решить тройные уравнения
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'
Странная вещь, сообщение об ошибке исчезнет, если я только решить первые два уравнения --- изменив последнюю строку кода
print(nsolve((eq1, eq2), (x,y), (-50,50)))
выход:
exec(open('bug444.py').read())
[-1.5]
[ 1.5]
Я озадачен; ваша помощь очень ценится!
Несколько частей дополнительной информации:
Я использую python3.4.0 + SymPy 0.7.6-3 на убунту 14.04. Я получил ту же ошибку в python2
я мог бы решить эту систему, используя
решения ([EQ1, EQ2, EQ3], [х, у, г])
, но эту систему это просто игрушечный пример; в реальных приложениях система нелинейна, и мне нужна более высокая точность, и я не вижу, как настроить точность для решения, тогда как для nsolve я мог бы использовать nsolve(... , prec=100)
СПАСИБО!
https: // GitHub. com/sympy/sympy/issues/12052 – asmeurer
Кстати, вы должны знать, что для установки точности в 'nsolve' требуется версия git для Sympy. – asmeurer