sympy.solve.
sympy是python中的一个科学计算库,提供了强大的符号计算体系,可用于多项式求值、求极限、解方程、求积分、微分方程、级数展开、矩阵运算等等计算问题。本文主要介绍使用sympy库求解方程的方法。
首先定义用到的库:
import sympy
from sympy import Symbol # 用于定义变量
from sympy import sovle # 用于方程的解析解
from sympy import nsovle # 用于方程的数值解
使用sympy库时常见报错如下:
TypeError: can’t convert expression to float
:该报错是因为在表达式中使用了math
等库中定义的运算,如math.exp
;对应地,应用sympy.exp
代替。No algorithms are implemented to solve equation
:该报错是因为使用sympy.solve
求解的方程没有解析解;对应地,可以求其数值解sympy.nsolve
。
例1:求解单变量方程
\[e^x = 3\]import sympy
from sympy import Symbol, solve
x = Symbol('x')
fn = sympy.exp(x)-3
y = solve(fn, x)
print(y) # [log(3)]
例2:求解多变量方程
\[x^2 + y^2 = 3\]import sympy
from sympy import Symbol, solve
x = Symbol('x')
y = Symbol('y')
fn = x**2 + y**2 - 3
z = solve(fn, [x,y])
print(z) # [(-sqrt(3 - y**2), y), (sqrt(3 - y**2), y)]
例3:求解多变量方程组
\[x + y = 3 \\ x - y = -5\]import sympy
from sympy import Symbol, solve
x = Symbol('x')
y = Symbol('y')
fn1 = x + y - 3
fn2 = x - y + 5
z = solve([fn1,fn2], [x,y])
print(z) # {x: -1, y: 4}
例4:求解数值解
\[x+e^x+\sin(x) = 10\]import sympy
from sympy import Symbol, nsolve
x = Symbol('x')
fn = x + sympy.exp(x) + sympy.sin(x) - 10
z = nsolve(fn, x, 2) # 数值求解需要提供初值
print(z) # 1.96200120343440