导入
from __future__ import division
from sympy import *
x,y,z=symbols('x,y,z')
k,m,n=symbols('k,m,n',integer=Ture)
f,g,h=map(Function,'fgh')
数字表达式
符号
symbols(),var()函数用于赋值,可通过关键词指定假设条件。
var("x0,y0,x1,y1")
x=symbols("x",positive=True)
数值,运算符与函数
符号运算
表达式变换和化简
simplify()
用于对数学表达式进行化简;
radsimp()
对表达式的分母进行有理化;
expand()
根据用户设置的标志参数对表达式进行展开;
factor()
对多项式进行因式分解;
…
simplify((x+2)**2-(x+1)**2)
radsimp(1/(sqrt(5)+2*sqrt(2)))
expand(sin(x+y),trig=True)
factor(15*x**2+2*y-3*x-10*x*y)
方程
在Sympy中,表达式可以直接表示为值为0的方程。也可以使用Eq()
创建方程。solve()
可以对方程进行符号求解,其第一个参数为方程的表达式,其后的参数为未知变量。
a,b,c = symbols("a,b,c")
solve(a*x**2+b*x+c,x)
微分
Derivative
是表示导函数的类,它的第一个参数是需要进行求导的数学函数,第二个参数是求导的自变量。但并不会进行求导运算。
t = Derivative(sin(x),x)
t
>>> D(sin(x),x)
如果希望进行实际的运算,可调用其doit()
方法:
t.doit()
>>> cos(x)
也可以直接使用diff()
函数或表达式的diff()
方法来计算:
diff(sin(2*x),x)
>>> 2*cos(2*x)
sin(2*x).diff(x)
>>> 2*cos(2*x)
添加更多的符号参数表示高阶导数:
diff(sin(2*x),x,x)
>>> -4*sin(2*x)
多个变量表示n阶偏导
diff(sin(x*y),x,2,y,3)
>>> x*(x**2*y**2*cos(x*y)+6*x*y*sin(x*y)-6*cos(x*y))
微分方程
dsolve()
可以对微分方程进行符号求解。第一个参数是带未知函数的表达式,第二个参数是需要进行求解的未知函数。
f=Function("f")
dsolve(Derivation(f(x),x)-f(x),f(x))
>>> f(x) == C1*exp(x)
积分
integrate()
可以计算定积分和不定积分
- integrate(f,x): 计算不定积分
- integrate(f,(x,a,b): 计算定积分
- integrate(f,x,y): 计算双重不定积分
- integrate(f,(x,a,b),(y,a,b)): 计算双重定积分
计算定积分时,可以用oo表示正无穷
integrate(sin(x),x)
>>> -cos(x)
和Derivative
对象表示微分表达式类似,Integral
对象表示积分表达式:
e=Integral(x*sin(x),x)
>>> e
as_sum()
方法可以将定积分转换为近似求和公式,将积分区域分割成N个小矩形的面积之和:
Integral(sin(x),(x,0,1)).as_sum(5)
>>> sin(1/10)/5+sin(3/10)/5+sin(1/2)/5+sin(7/10)/5+sin(9/10)/5