SymPy может анализировать строки с sympify
, но его формат для уравнений - Eq(x/2, 4)
вместо x/2 = 4
. Поэтому необходима небольшая предварительная обработка: окружите строку Eq(
)
и замените "=" запятой.
eq = "x/2=4"
sympy_eq = sympify("Eq(" + eq.replace("=", ",") + ")")
solve(sympy_eq) # [8]
и
eq = "x + 2 = y - 1"
sympy_eq = sympify("Eq(" + eq.replace("=", ",") + ")")
solve(sympy_eq) # [{x: y - 3}]
В последнем случае SymPy выбрал одну из переменных для решения. Чтобы выбрать, какой это должен быть, вы можете предоставить символ:
solve(sympy_eq, Symbol('y')) # [x + 3]
Или, чтобы решить для каждого символа:
[solve(sympy_eq, sym, dict=True) for sym in sympy_eq.free_symbols]
возвращает [[{y: x + 3}], [{x: y - 3}]]
. Список является вложенным, поскольку для каждого символа может появиться несколько решений. При необходимости выровняйте вложенный список.
Опции list=True
и dict=True
из solve
удобны для принудительного применения определенных форм вывода.