Python SymPy
SymPy is a Computer algebra system (CAS) in Python
SymPy will try to find symbolic solution for any algebraic equations, which is possible to solve symbolically, which can be concluded from its name “Symbolic Python” = “SymPy”
Solving quadratic equation
To solve quadratic equation with symPy, you need to identify the variable with function Symbol() and then simply call for solve()
from sympy.solvers import solve
from sympy import Symbol
x = Symbol('x')
# Quadratic equation real roots
print(solve(5 * x ** 2 - 2 * x - 3, x)) # [-3/5, 1]
# Quadratic equation complex roots
# 5 * x ** 2 + 2 * x + 3 = 0
print(solve(5 * x ** 2 + 2 * x + 3, x)) # [-1/5 - sqrt(14)*I/5, -1/5 + sqrt(14)*I/5]
Solving Exponential equations
The way of using function solve() is absolutely the same. Answer will be given in symbolic form as well. To convert it to standard numbers it is necessary to convert it to float() format
# 3**(x+2) - 9**x - 20 = 0
res = solve(3 ** (x + 2) - 9 ** x - 20, x)
print(res) # [2*log(2)/log(3), log(5)/log(3)]
print([float(_) for _ in res]) # [1.2618595071429148, 1.464973520717927]
Trigonometric equations
For solving trigonometric equations it is necessary to import trigonommetric functions as well
from sympy import sin, cos, pi
It is important to remember, that for trigonometric equations unlimited number of solutions exists, both these solutions are periodically repeated. SymPy will give you only one solution ant it is your responsibility to remember about all these repetitions.
from sympy.solvers import solve
from sympy import Symbol
from sympy import sin, cos, pi
x = Symbol('x')
# sin(x) + cos(x) = 0
res = solve(sin(x) + cos(x), x)
print(res) # [-pi/4, 3*pi/4]
Not every equation can be solved with SymPy. Some equations have no analytical solution. In this case you will have NotImplementedError
Simplified SymPy usage
It is possible to use SymPy without declaring the variable. In this case the equation should be quoted:
from sympy.solvers import solve
print(solve('25*x - 5')) # [1/5]
Published: 2021-11-02 09:02:46