Python 中的Sympy详细使用

                              Python 中的Sympy详细使用

        遇到复杂计算找python绝对不让你失望,sympy是一个Python的科学计算库,用一套强大的符号计算体系完成诸如多项式求值、求极限、解方程、求积分、微分方程、级数展开、矩阵运算等等计算问题。虽然Matlab的类似科学计算能力也很强大,但是Python以其语法简单、易上手、异常丰富的三方库生态,个人认为可以更优雅地解决日常遇到的各种计算问题。安装在本博客就不细讲了!

        1、表达式与表达式求值:


 
 
  1. #--------多项式求解--------
  2. #定义变量
  3. x=sympy.Symbol( 'x')
  4. fx= 5*x+ 4
  5. #使用evalf函数传值
  6. y1=fx.evalf(subs={x: 6})
  7. print(y1)

 
 
  1. #多元表达式
  2. x=sympy.Symbol( 'x')
  3. y=sympy.Symbol( 'y')
  4. fx=x*x+y*y
  5. result=fx.evalf(subs={x: 3,y: 4})
  6. print(result)

       2、函数方程求解:


 
 
  1. #解方程 有限解
  2. #定义变量
  3. x=sympy.Symbol( 'x')
  4. y=sympy.Symbol( 'y')
  5. fx=x* 3+ 9
  6. #可求解直接给出解向量
  7. print(sympy.solve(fx,x))

 
 
  1. #解方程无穷多解
  2. #定义变量
  3. x=sympy.Symbol( 'x')
  4. y=sympy.Symbol( 'y')
  5. fx=x* 3+y** 2
  6. #得到是x与y的关系式,
  7. print(sympy.solve(fx,x,y))

 
 
  1. #解方程组
  2. #定义变量
  3. x=sympy.Symbol( 'x')
  4. y=sympy.Symbol( 'y')
  5. f1=x+y -3
  6. f2=x-y+ 5
  7. sympy.solve([f1,f2],[x,y])

 

        3、求和 


 
 
  1. import sympy
  2. #定义变量
  3. n=sympy.Symbol( 'n')
  4. f= 2*n
  5. #前面参数放函数,后面放变量的变化范围
  6. s=sympy.summation(f,(n, 1, 100))
  7. print(s)

解带有求和式的方程 :

    


 
 
  1. #解释一下,i可以看做是循环变量,就是x自己加五次
  2. #先定义变量,再写出方程
  3. x=sympy.Symbol( 'x')
  4. i=sympy.Symbol( 'i')
  5. f=sympy.summation(x,(i, 1, 5))+ 10*x -15
  6. result=sympy.solve(f,x)
  7. print(result)

         4、求极限(注意,math包中sin和很多数学函数会报错,要用sympy中的,无穷大用 sympy.oo 表示)


 
 
  1. #求极限使用limit方法
  2. #定义变量与函数
  3. x=sympy.Symbol( 'x')
  4. f1=sympy.sin(x)/x
  5. f2=( 1+x)**( 1/x)
  6. f3=( 1+ 1/x)**x
  7. #三个参数是 函数,变量,趋向值
  8. lim1=sympy.limit(f1,x, 0)
  9. lim2=sympy.limit(f2,x, 0)
  10. lim3=sympy.limit(f3,x,sympy.oo)
  11. print(lim1,lim2,lim3)

           5、求导


 
 
  1. #求导使用diff方法
  2. x=sympy.Symbol( 'x')
  3. f1= 2*x** 4+ 3*x+ 6
  4. #参数是函数与变量
  5. f1_=sympy.diff(f,x)
  6. print(f1_)
  7. f2=sympy.sin(x)
  8. f2_=sympy.diff(f2,x)
  9. print(f2_)
  10. #求偏导
  11. y=sympy.Symbol( 'y')
  12. f3= 2*x** 2+ 3*y** 4+ 2*y
  13. #对x,y分别求导,即偏导
  14. f3_x=sympy.diff(f3,x)
  15. f3_y=sympy.diff(f3,y)
  16. print(f3_x)
  17. print(f3_y)

           6、求定积分


 
 
  1. #求定积分用 integrate方法
  2. x=sympy.Symbol( 'x')
  3. f= 2*x
  4. #参数传入 函数,积分变量和范围
  5. result=sympy.integrate(f,(x, 0, 1))
  6. print(result)

          上面的求法有点烂,难的就罢工不干了,我丢,还是喜欢scipy,如下:

http://liao.cpython.org/scipy18/  scipy 还能解决很多数值计算,包括多重积分。


 
 
  1. from scipy import integrate
  2. def f(x):
  3. return x + 1
  4. v, err = integrate.quad(f, 1, 2) # err为误差
  5. print (v)

 以下计算多重积分: 


 
 
  1. #求多重积分,先求里面的积分,再求外面的
  2. x,t=sympy.symbols( 'x t')
  3. f1= 2*t
  4. f2=sympy.integrate(f1,(t, 0,x))
  5. result=sympy.integrate(f2,(x, 0, 3))
  6. print(result)

 

        7、求不定积分

      结果是         


 
 
  1. #求不定积分其实和定积分区别不大
  2. x=sympy.Symbol( 'x')
  3. f=(sympy.E**x+ 2*x)
  4. f_=sympy.integrate(f,x)
  5. print(f_)

         8、数学符合补充:


 
 
  1. #数学符合
  2. #虚数单位i
  3. sympy.I
  4. #自然对数低e
  5. sympy.E
  6. #无穷大
  7. sympy.oo
  8. #圆周率
  9. sympy.pi
  10. #求n次方根
  11. sympy.root( 8, 3)
  12. #求对数
  13. sympy.log( 1024, 2)
  14. #求阶乘
  15. sympy.factorial( 4)
  16. #三角函数
  17. sympy.sin(sympy.pi)
  18. sympy.tan(sympy.pi/ 4)
  19. sympy.cos(sympy.pi/ 2)

         9、公式展开与折叠


 
 
  1. x=sympy.Symbol( 'x')
  2. #公式展开用expand方法
  3. f=( 1+ 2*x)*x** 2
  4. ff=sympy.expand(f)
  5. print(ff)
  6. #公式折叠用factor方法
  7. f=x** 2+ 1+ 2*x
  8. ff=sympy.factor(f)
  9. print(ff)

         10、公式分离与合并(分数的分离与合并)


 
 
  1. x=sympy.Symbol( 'x')
  2. y=sympy.Symbol( 'y')
  3. #公式展开用apart方法,和expand区别不是很大,常用于分数进行分离
  4. f=(x+ 2)/(x+ 1)
  5. ff=sympy.apart(f)
  6. print(ff)
  7. #公式折叠用tegother方法
  8. f=( 1/x+ 1/y)
  9. ff=sympy.together(f)
  10. print(ff)

          11、表达式简化


 
 
  1. #simplify( )普通的化简
  2. simplify((x** 3 + x** 2 - x - 1)/(x** 2 + 2*x + 1))
  3. #trigsimp( )三角化简
  4. trigsimp(sin(x)/cos(x))
  5. #powsimp( )指数化简
  6. powsimp(x**a*x**b)

 

十分感谢简书博主:https://www.jianshu.com/p/339c91ae9f41,原博客可能更加详细含有运行结果!侵删谢谢!

 

 

转载自:https://blog.csdn.net/cj151525/article/details/95756847
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值