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编写基于DHT协议的BT资源爬虫
Mar 19 Python
Python正则表达式分组概念与用法详解
Jun 24 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
May 18 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
Jun 11 Python
关于python2 csv写入空白行的问题
Jun 22 Python
python 字典修改键(key)的几种方法
Aug 10 Python
python pygame实现五子棋小游戏
Oct 26 Python
python处理大日志文件
Jul 23 Python
Matplotlib绘制雷达图和三维图的示例代码
Jan 07 Python
keras .h5转移动端的.tflite文件实现方式
May 25 Python
了解一下python内建模块collections
Sep 07 Python
Python中Selenium模块的使用详解
Oct 09 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
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
php中fgetcsv()函数用法实例
2014/11/28 PHP
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
jquery select选中的一个小问题
2009/10/11 Javascript
三种动态加载js的jquery实例代码另附去除js方法
2014/04/30 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
2015/09/17 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
python通过colorama模块在控制台输出彩色文字的方法
2015/03/19 Python
Python中生成器和yield语句的用法详解
2015/04/17 Python
Python运行报错UnicodeDecodeError的解决方法
2016/06/07 Python
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
Python机器学习库scikit-learn安装与基本使用教程
2018/06/25 Python
Python根据成绩分析系统浅析
2019/02/11 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
英国领先的名牌服装折扣零售商:Brown Bag Clothing
2019/01/08 全球购物
医学毕业生自我鉴定
2013/10/30 职场文书
结婚喜宴主持词
2014/03/14 职场文书
班委竞选演讲稿
2014/04/28 职场文书
林肯就职演讲稿
2014/05/19 职场文书
创新社会管理心得体会
2014/09/12 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技