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实现的HMacMD5加密算法示例
Apr 03 Python
使用Python检测文章抄袭及去重算法原理解析
Jun 14 Python
Python获取好友地区分布及好友性别分布情况代码详解
Jul 10 Python
使用Python实现文字转语音并生成wav文件的例子
Aug 08 Python
Django url,从一个页面调到另个页面的方法
Aug 21 Python
python设置随机种子实例讲解
Sep 12 Python
Tensorflow进行多维矩阵的拆分与拼接实例
Feb 07 Python
Python MOCK SERVER moco模拟接口测试过程解析
Apr 13 Python
零基础学Python之前需要学c语言吗
Jul 21 Python
基于Python爬取51cto博客页面信息过程解析
Aug 25 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
Oct 15 Python
Pycharm制作搞怪弹窗的实现代码
Feb 19 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学习之PHP表达式
2006/10/09 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
PHP微信模板消息操作示例
2017/06/29 PHP
鼠标图片振动代码
2006/07/06 Javascript
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
javascript禁止超链接跳转的方法
2016/02/02 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
javascript实现简单的可随机变色网页计算器示例
2016/12/30 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
Javascript仿京东放大镜的效果
2017/03/01 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
用pickle存储Python的原生对象方法
2017/04/28 Python
django 多数据库配置教程
2018/05/30 Python
python实现狄克斯特拉算法
2019/01/17 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
Python爬虫:将headers请求头字符串转为字典的方法
2019/08/21 Python
Django密码存储策略分析
2020/01/09 Python
如何基于线程池提升request模块效率
2020/04/18 Python
python实现粒子群算法
2020/10/15 Python
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
销售文员的岗位职责
2013/11/20 职场文书
转党组织关系介绍信
2014/01/08 职场文书
主持人婚宴答谢词
2014/01/28 职场文书
上课玩手机检讨书
2014/02/08 职场文书
统计学教授推荐信
2014/09/18 职场文书
大学生入党积极分子自我评价
2014/09/20 职场文书
2014年稽查工作总结
2014/12/20 职场文书
高中班主任评语
2014/12/30 职场文书
参观邀请函范文
2015/02/02 职场文书
招商银行收入证明
2015/06/17 职场文书