python sympy_python(7):sympy模块

sympy主要用于符号计算

1,基本操作

from sympy import*

#from sympy import pprint#x=Symbol('x')#也可以这么单个定义#y=Symbol('y')

x,y,i,n,t,k=symbols('x y i n t k')#注意空格,不是逗号!

z=Symbol('z')print x+y+x-yprint ((x+y)**2).expand()#展开print ((x+y)**2).subs(x,1)#subs(old,new)

print ((x+y)**2).subs(x,y)print apart(1/((x+2)*(x+1)),x)#分离整式print apart((x+1)/(x-1),x)print together(1/x+1/y+1/z)#合并print together(apart((x+1)/(x-1),x),x)

ans:

2*x

x**2 + 2*x*y + y**2

(y + 1)**2

4*y**2

-1/(x + 2) + 1/(x + 1)

1 + 2/(x - 1)

(x*y + x*z + y*z)/(x*y*z)

(x + 1)/(x - 1)

2.极限求解

#求极限limit(func,variable,point)

print limit(sin(x)/x,x,0)print limit(x,x,oo)#oo表示无穷

print limit(1/x,x,oo)print limit(x**x,x,0)

remark:oo表示无穷, 这里sin,cos,tan 可以直接这么用

ans:1 ,oo,  0,   1

3.微分

diff(func,variable)

高阶微分:diff(sin(2*x),x,2),2表示阶数

printdiff(sin(x),x)#print y

print diff(sin(2*x),x)printdiff(tan(x),x)print limit((tan(x+y)-tan(x))/y,y,0)#验证上述微分##高阶微分

print diff(sin(2*x),x,2)

ans:

cos(x)2*cos(2*x)

tan(x)**2 + 1tan(x)**2 + 1

-4*sin(2*x)

4.级数展开

func.series(variable,a,b)从第a阶开始展开,10阶取不到!!

print cos(x).series(x,0,10)print (1/cos(x)).series(x,0,10)

ans:1 - x**2/2 + x**4/24 - x**6/720 + x**8/40320 + O(x**10)1 + x**2/2 + 5*x**4/24 + 61*x**6/720 + 277*x**8/8064 + O(x**10)

补充:

#三角函数公式的展开

print sin(x+y).expand(trig=True)

ans:sin(x)*cos(y) + sin(y)*cos(x)

5.积分

#积分

print integrate(6*x**5,x)printintegrate(sin(x),x)#定积分

print integrate(x**3,(x,-1,1))print integrate(sin(x),(x,0,pi/2))

ans:

x**6

-cos(x)

01

6.求解代数方程 solve

print solve(x**4-1,x)print solve([x+5*y-2,-3*x+6*y-15],[x,y])

ans:

[-1, 1, -I, I]

{x:-3, y: 1}

7.微分方程

f=Function('f')#注意要定义一下!!!#f(x).diff(x,x)+f(x)

print dsolve(f(x).diff(x,x)+f(x),f(x))#什么意思??

print dsolve(f(x).diff(x,x)+1,f(x))printdsolve(f(x).diff(x,x),f(x))print dsolve(diff(f(x),x)-1,f(x))#这个意思好理解#为什么与上式不同?

print dsolve(diff(f(x),x)+f(x),f(x))#ans:

Eq(f(x), C1*sin(x) + C2*cos(x))

Eq(f(x), C1+ C2*x - x**2/2)

Eq(f(x), C1+ C2*x)

Eq(f(x), C1+x)

Eq(f(x), C1*exp(-x))

8.矩阵化简

a11,a12,a13,a22,a23,a33=symbols('a11 a12 a13 a22 a23 a33')

m=Matrix([[x,y,z]])

n=Matrix([[a11,a12,a13],[a12,a22,a23],[a13,a23,a33]])

v=Matrix([[x],[y],[z]])

f=m*n*v#二次型

printfprint f.subs({x:1,y:1,z:1})#其他方式做替换subs((x,y),(u,v))

print f.subs((x,y,z),(1,1,1))#is ok#print f.subs([x,y,z],[1,1,1])#error!!

ans:

Matrix([[x*(a11*x + a12*y + a13*z) + y*(a12*x + a22*y + a23*z) + z*(a13*x + a23*y + a33*z)]])

Matrix([[a11+ 2*a12 + 2*a13 + a22 + 2*a23 +a33]])

Matrix([[x*(a11*x + a12*y + a13*z) + y*(a12*x + a22*y + a23*z) + z*(a13*x + a23*y + a33*z)]])

9.级数求和

summation

print summation(2*i-1,(i,1,3))#1,3都会取到

print summation(1/2**i,(i,0,oo))print summation(1/log(n)**n,(n,2,oo))#不能计算总和,将打印相应的求和公式

print summation(exp(x),(x,0,4))print summation(I**t,(t,1,3))print summation((x*t)**n/factorial(n),(n,0,oo))print summation(log(n/k-1)*exp(I*t*k),(k,0,n))

ans:9

2Sum(log(n)**(-n), (n, 2, oo))1 + E + exp(2) + exp(3) + exp(4)-1exp(t*x)

Sum(exp(I*k*t)*log(-1 + n/k), (k, 0, n))1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值