documentation on nonlinsolve
дает этот пример:Поскольку пример в документации не работает, как я могу решить нелинейную систему уравнений численно в SymPy?
from sympy.core.symbol import symbols
from sympy.solvers.solveset import nonlinsolve
x, y, z = symbols('x, y, z', real=True)
nonlinsolve([x*y - 1, 4*x**2 + y**2 - 5], [x, y])
{(-1, -1), (-1/2, -2), (1/2, 2), (1, 1)}
, но даже в живой оболочке на своем сайте, что выдает ошибку:
>>> from sympy.solvers.solveset import nonlinsolve
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: cannot import name nonlinsolve
Как я могу использовать nonlinsolve
решить систему уравнений численно? Я знаю, что могу использовать ufuncify
для преобразования уравнений в систему, которую может решить scipy.optimize.fsolve
, но я бы предпочел избежать этих двух строк шаблона и просто использовать SymPy напрямую.
В соответствии с SymPy documentation on solve
использование solve
не рекомендуется. Для нелинейных систем уравнений документация рекомендует sympy.solvers.solveset.nonlinsolve
, что я и пытаюсь использовать здесь.
использовать 'sympy.solve ([x * y - 1, 4 * x ** 2 + y ** 2 - 5], [x, y])' – Stelios
@Stelios Согласно документации Sympy, [используя ' solve' не рекомендуется] (http://docs.sympy.org/dev/modules/solvers/solvers.html). Я добавлю это заявление к моему вопросу. –
Документы, возможно, немного агрессивны в этом отношении.solveset действительно заменит решение, но все же есть случаи, когда это необходимо, например, нелинейные системы. – asmeurer