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实现抓取百度搜索结果页的网站标题信息
Jan 22 Python
Django中对数据查询结果进行排序的方法
Jul 17 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
Jun 27 Python
python中的set实现不重复的排序原理
Jan 24 Python
python实现人民币大写转换
Jun 20 Python
Python 中字符串拼接的多种方法
Jul 30 Python
关于PyTorch源码解读之torchvision.models
Aug 17 Python
浅析Django中关于session的使用
Dec 30 Python
使用Python制作新型冠状病毒实时疫情图
Jan 28 Python
jupyter notebook 增加kernel教程
Apr 10 Python
python中if及if-else如何使用
Jun 02 Python
Python 读取千万级数据自动写入 MySQL 数据库
Jun 28 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的explode和implode的使用说明
2011/07/17 PHP
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
php解析字符串里所有URL地址的方法
2015/04/03 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
laravel 执行迁移回滚示例
2019/10/23 PHP
PHP安全之register_globals的on和off的区别
2020/07/23 PHP
Javascript 作用域使用说明
2009/08/13 Javascript
jQuery对象[0]是什么含义?
2010/07/31 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
jQuery实现淡入淡出的模态框
2017/02/09 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
2019/09/03 jQuery
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
python使用正则表达式提取网页URL的方法
2015/05/26 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
2019/08/27 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
Python使用enumerate获取迭代元素下标
2020/02/03 Python
python rolling regression. 使用 Python 实现滚动回归操作
2020/06/08 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
LEGO玩具英国官方商店:LEGO Shop GB
2018/03/27 全球购物
您的时尚,您的生活方式:DTLR Villa
2019/12/25 全球购物
什么是测试驱动开发(TDD)
2012/02/15 面试题
护士自荐信
2013/10/25 职场文书
大学生毕业自我鉴定
2013/11/06 职场文书
竞选卫生委员演讲稿
2014/04/28 职场文书
诚信的演讲稿范文
2014/05/12 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
保洁员岗位职责
2015/02/04 职场文书