Python 中Sympy如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
1、表达式与表达式求值:
#--------多项式求解-------- #定义变量 x=sympy.Symbol'x') fx=5*x+4 #使用evalf函数传值 y1=fx.evalfsubs={x:6}) printy1)
#多元表达式 x=sympy.Symbol'x') y=sympy.Symbol'y') fx=x*x+y*y result=fx.evalfsubs={x:3,y:4}) printresult)
2、函数方程求解:
#解方程 有限解 #定义变量 x=sympy.Symbol'x') y=sympy.Symbol'y') fx=x*3+9 #可求解直接给出解向量 printsympy.solvefx,x))
#解方程无穷多解 #定义变量 x=sympy.Symbol'x') y=sympy.Symbol'y') fx=x*3+y**2 #得到是x与y的关系式, printsympy.solvefx,x,y))
#解方程组 #定义变量 x=sympy.Symbol'x') y=sympy.Symbol'y') f1=x+y-3 f2=x-y+5 sympy.solve[f1,f2],[x,y])
3、求和
import sympy #定义变量 n=sympy.Symbol'n') f=2*n #前面参数放函数,后面放变量的变化范围 s=sympy.summationf,n,1,100)) prints)
解带有求和式的方程 :
#解释一下,i可以看做是循环变量,就是x自己加五次 #先定义变量,再写出方程 x=sympy.Symbol'x') i=sympy.Symbol'i') f=sympy.summationx,i,1,5))+10*x-15 result=sympy.solvef,x) printresult)
4、求极限(注意,math包中sin和很多数学函数会报错,要用sympy中的,无穷大用 sympy.oo 表示)
#求极限使用limit方法 #定义变量与函数 x=sympy.Symbol'x') f1=sympy.sinx)/x f2=1+x)**1/x) f3=1+1/x)**x #三个参数是 函数,变量,趋向值 lim1=sympy.limitf1,x,0) lim2=sympy.limitf2,x,0) lim3=sympy.limitf3,x,sympy.oo) printlim1,lim2,lim3)
5、求导
#求导使用diff方法 x=sympy.Symbol'x') f1=2*x**4+3*x+6 #参数是函数与变量 f1_=sympy.difff,x) printf1_) f2=sympy.sinx) f2_=sympy.difff2,x) printf2_) #求偏导 y=sympy.Symbol'y') f3=2*x**2+3*y**4+2*y #对x,y分别求导,即偏导 f3_x=sympy.difff3,x) f3_y=sympy.difff3,y) printf3_x) printf3_y)
6、求定积分
#求定积分用 integrate方法 x=sympy.Symbol'x') f=2*x #参数传入 函数,积分变量和范围 result=sympy.integratef,x,0,1)) printresult)
上面的求法有点烂,难的就罢工不干了,我丢,还是喜欢scipy,如下: http://liao.cpython.org/scipy18/ scipy 还能解决很多数值计算,包括多重积分。
from scipy import integrate def fx): return x + 1 v, err = integrate.quadf, 1, 2)# err为误差 print (v)
以下计算多重积分:
#求多重积分,先求里面的积分,再求外面的 x,t=sympy.symbols'x t') f1=2*t f2=sympy.integratef1,t,0,x)) result=sympy.integratef2,x,0,3)) printresult)
7、求不定积分
#求不定积分其实和定积分区别不大 x=sympy.Symbol'x') f=sympy.E**x+2*x) f_=sympy.integratef,x) printf_)
8、数学符合补充:
#数学符合 #虚数单位i sympy.I #自然对数低e sympy.E #无穷大 sympy.oo #圆周率 sympy.pi #求n次方根 sympy.root8,3) #求对数 sympy.log1024,2) #求阶乘 sympy.factorial4) #三角函数 sympy.sinsympy.pi) sympy.tansympy.pi/4) sympy.cossympy.pi/2)
9、公式展开与折叠
x=sympy.Symbol'x') #公式展开用expand方法 f=1+2*x)*x**2 ff=sympy.expandf) printff) #公式折叠用factor方法 f=x**2+1+2*x ff=sympy.factorf) printff)
10、公式分离与合并(分数的分离与合并)
x=sympy.Symbol'x') y=sympy.Symbol'y') #公式展开用apart方法,和expand区别不是很大,常用于分数进行分离 f=x+2)/x+1) ff=sympy.apartf) printff) #公式折叠用tegother方法 f=1/x+1/y) ff=sympy.togetherf) printff)
11、表达式简化
#simplify )普通的化简 simplifyx**3 + x**2 - x - 1)/x**2 + 2*x + 1)) #trigsimp )三角化简 trigsimpsinx)/cosx)) #powsimp )指数化简 powsimpx**a*x**b)