举个简单的例子,比如展开二次方程:fromsympyimport*x=Symbol('x')y=Symbol('y')d=((x+y)**2).expand()print(d)#结果:x**2+2*x*y+y**2可以输入任意表达式,哪怕是10次方也可以很方便的展开,很方便:fromsympyimport*x=Symbol('x')y=Symbol('y')d=((x+y)**10).expand()print(d)#结果:x**10+10*x**9*y+45*x**8*y**2+120*x**7*y**3+210*x**6*y**4+252*x**5*y**5+210*x**4*y**6+120*x**3*y**7+45*x**2*y**8+10*x*y**9+y**10下面说说这个模块的具体用法和例子。一、准备工作请选择以下任意一种方式输入命令安装依赖项:1、Windows环境打开Cmd(开始-运行-CMD)。2.在MacOS环境下,打开Terminal(command+空格进入Terminal)。3.如果你使用的是VSCode编辑器或者Pycharm,可以直接使用界面下方的Terminal.pipinstallSympy。2.简化表达式的基本使用(化简)Sympy支持三种化简方式,分别是普通化简和三角化简,指数化简。一般简化simplify():fromsympyimport*x=Symbol('x')d=simplify((x**3+x**2-x-1)/(x**2+2*x+1))print(d)#result:x-1triangularsimplificationtrigsimp():fromsympyimport*x=Symbol('x')d=trigsimp(sin(x)/cos(x))print(d)#结果:tan(x)指数简化powsimp():fromsympyimport*x=Symbol('x')a=Symbol('a')b=Symbol('b')d=powsimp(x**a*x**b)print(d)#结果:x**(a+b)求解方程。solve()第一个参数为待解方程,要求右端等于0,第二个参数为待解未知数。例如,一个只有一个变量的线性方程:fromsympyimport*x=Symbol('x')d=solve(x*3-6,x)print(d)#结果:[2]一个有两个变量的线性方程:fromsympyimport*x=Symbol('x')y=Symbol('y')d=solve([2*x-y-3,3*x+y-7],[x,y])print(d)#result:{x:2,y:1}求极限limit()dir='+'表示求解右极限,dir='-'表示求解左极限:fromsympyimport*x=Symbol('x')d=limit(1/x,x,oo,dir='+')print(d)#结果:0d=limit(1/x,x,oo,dir='-')print(d)#Result:0andintegrate()先尝试求解不定积分:fromsympyimport*x=Symbol('x')d=integrate(sin(x),x)print(d)#Result:-cos(x)然后尝试定积分:fromsympyimport*x=Symbol('x')d=integrate(sin(x),(x,0,pi/2))print(d)#结果:1推导diff()使用diff函数进行等式推导:fromsympyimport*x=Symbol('x')d=diff(x**3,x)print(d)#结果:3*x**2d=diff(x**3,x,2)print(d)#结果:6*x求微分ialequationdsolve()以y′=2xy为例:fromsympyimport*x=Symbol('x')f=Function('f')d=dsolve(diff(f(x),x)-2*f(x)*x,f(x))print(d)#Result:Eq(f(x),C1*exp(x**2))3.实战有个同学问了这个问题,“各位大佬,我想请问这个点在Python中怎么写,谢谢大家》:#Python实战宝典fromsympyimport*x=Symbol('x')y=Symbol('y')d=integrate(x-y,(y,0,1))print(d)#Result:x-1/2为了计算这个结果,integrate的第一个参数是公式,第二个参数是积分变量和整数范围的下标用上标运行后得到的结果是x-1/2符合预期。如果你还需要解微积分和复杂的方程,你可以试试sympy,它几乎是完美的。
