Как решить простое уравнение Python
Пишу систему ГДЗ. Нужно, чтобы пользователь ввёл уравнение (с 1 неизвестным x), а программа вывела решение и ответ. Пытался делать через срезы, но это очень долго.
Примеры:
1)Ввод:
x+226=300
Вывод:
x=300-226
x=74
2)Ввод:
x+22-(33+44)=0
Вывод:
x+22-77=0
x+22=0+77
x+22=77
x=77-22
x=55
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Если нужен только результат, т.е. найти значение переменной x, но не показывать шаги решения, то это легко делается при помощи модуля SymPy:
from sympy import symbols, solve, parse_expr, simplify
from sympy.parsing.sympy_parser import standard_transformations, implicit_multiplication_application
transformations = (standard_transformations + (implicit_multiplication_application,))
formula = "x(4x+22)-(3x+44)^2=0"
def map_operations(formula_str):
return formula_str.replace("^", "**").replace("=", "-")
f = parse_expr(map_operations(formula), transformations=transformations)
roots = solve(f) # <-- вернуть все корни уравнения в виде списка
print(roots)
вывод:
[-121/5 - 11*sqrt(41)/5, -121/5 + 11*sqrt(41)/5]
также модуль SymPy умеет аналитически упрощать выражения:
In [7]: simplify(f)
Out[7]: -5*x**2 - 242*x - 1936
In [8]: simplify(parse_expr("(x-1) * (x+1)"))
Out[8]: x**2 - 1