Python 中的Sympy详细使用


Posted in Python onAugust 07, 2021

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

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

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

       2、函数方程求解:

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

      

#解方程无穷多解
#定义变量
x=sympy.Symbol('x')
y=sympy.Symbol('y')
fx=x*3+y**2
#得到是x与y的关系式,
print(sympy.solve(fx,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、求和 

Python 中的Sympy详细使用

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

解带有求和式的方程 :  

Python 中的Sympy详细使用   

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

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

Python 中的Sympy详细使用

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

           5、求导 

#求导使用diff方法
x=sympy.Symbol('x')
f1=2*x**4+3*x+6
#参数是函数与变量
f1_=sympy.diff(f,x)
print(f1_)
 
f2=sympy.sin(x)
f2_=sympy.diff(f2,x)
print(f2_)
 
#求偏导
y=sympy.Symbol('y')
f3=2*x**2+3*y**4+2*y
#对x,y分别求导,即偏导
f3_x=sympy.diff(f3,x)
f3_y=sympy.diff(f3,y)
print(f3_x)
print(f3_y)

           6、求定积分

Python 中的Sympy详细使用

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

          上面的求法有点烂,难的就罢工不干了,我丢,还是喜欢scipy,如下: http://liao.cpython.org/scipy18/  scipy 还能解决很多数值计算,包括多重积分。 

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

 以下计算多重积分: 

Python 中的Sympy详细使用

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

        7、求不定积分

Python 中的Sympy详细使用    

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

         8、数学符合补充:

#数学符合
#虚数单位i
sympy.I
#自然对数低e
sympy.E
#无穷大
sympy.oo
#圆周率
sympy.pi
#求n次方根
sympy.root(8,3)
#求对数
sympy.log(1024,2)
#求阶乘
sympy.factorial(4)
#三角函数
sympy.sin(sympy.pi)
sympy.tan(sympy.pi/4)
sympy.cos(sympy.pi/2)

         9、公式展开与折叠 

x=sympy.Symbol('x')
#公式展开用expand方法
f=(1+2*x)*x**2
ff=sympy.expand(f)
print(ff)
#公式折叠用factor方法
f=x**2+1+2*x
ff=sympy.factor(f)
print(ff)

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

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

11、表达式简化

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

到此这篇关于Python 中的Sympy详细使用的文章就介绍到这了,更多相关Python Sympy使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中subprocess模块用法实例详解
May 20 Python
详谈python read readline readlines的区别
Sep 22 Python
Python中Threading用法详解
Dec 27 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
Jun 27 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
python实现基于朴素贝叶斯的垃圾分类算法
Jul 09 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
Mar 30 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
Jun 30 Python
导致python中import错误的原因是什么
Jul 01 Python
python爬虫数据保存到mongoDB的实例方法
Jul 28 Python
python打包生成so文件的实现
Oct 30 Python
Python包资源下载路径报404解决方案
Nov 05 Python
Anaconda配置各版本Pytorch的实现
Aug 07 #Python
python开发的自动化运维工具ansible详解
Python初识逻辑与if语句及用法大全
Aug 07 #Python
python之json文件转xml文件案例讲解
Aug 07 #Python
一篇文章弄懂Python中的内建函数
Aug 07 #Python
Python 可迭代对象 iterable的具体使用
Aug 07 #Python
Python pandas之求和运算和非空值个数统计
Aug 07 #Python
You might like
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
2009/12/18 PHP
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
jquery实现动态画圆
2014/12/04 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
详解react如何在组件中获取路由参数
2017/06/15 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
[03:42]2014DOTA2西雅图国际邀请赛7月9日TOPPLAY
2014/07/09 DOTA
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
Python基于类路径字符串获取静态属性
2020/03/12 Python
如何在django中运行scrapy框架
2020/04/22 Python
100%法国制造的游戏和玩具:Les Jouets Français
2021/03/02 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
护理专业应届毕业生推荐信
2013/11/15 职场文书
文言文形式的学生求职信
2013/12/03 职场文书
春季防火方案
2014/05/10 职场文书
学历证明范文
2015/06/16 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
小学生班干部竞选稿
2015/11/20 职场文书
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android