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实现备份文件实例
Sep 16 Python
几个提升Python运行效率的方法之间的对比
Apr 03 Python
进一步探究Python中的正则表达式
Apr 28 Python
Python判断值是否在list或set中的性能对比分析
Apr 16 Python
CentOS中升级Python版本的方法详解
Jul 10 Python
详解Python nose单元测试框架的安装与使用
Dec 20 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
Nov 07 Python
python在新的图片窗口显示图片(图像)的方法
Jul 11 Python
Python-copy()与deepcopy()区别详解
Jul 12 Python
pytorch 更改预训练模型网络结构的方法
Aug 19 Python
基于Django实现日志记录报错信息
Dec 17 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 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
德劲1102收音机的打理维修案例
2021/03/02 无线电
php分页函数
2006/07/08 PHP
文章推荐系统(三)
2006/10/09 PHP
PHP 文件缓存的性能测试
2010/04/25 PHP
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
laravel 5.3 单用户登录简单实现方法
2019/10/14 PHP
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
jquery中ajax学习笔记一
2011/10/16 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
2013/09/29 Javascript
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
浅析JavaScript中的array数组类型系统
2016/07/18 Javascript
AngularJS中filter的使用实例详解
2017/08/25 Javascript
Nodejs调用WebService的示例代码
2017/09/29 NodeJs
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
跟老齐学Python之变量和参数
2014/10/10 Python
介绍Python中的一些高级编程技巧
2015/04/02 Python
Python实现信用卡系统(支持购物、转账、存取钱)
2016/06/24 Python
Python中的id()函数指的什么
2017/10/17 Python
Python画柱状统计图操作示例【基于matplotlib库】
2018/07/04 Python
CentOS7下python3.7.0安装教程
2018/07/30 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
pandas读取CSV文件时查看修改各列的数据类型格式
2019/07/07 Python
Pycharm连接远程服务器过程图解
2020/04/30 Python
python-地图可视化组件folium的操作
2020/12/14 Python
酒店总经理助理岗位职责
2014/02/01 职场文书
党风廉政承诺书
2014/03/27 职场文书
安全生产工作汇报材料
2014/10/28 职场文书
党风廉政建设心得体会(2016最新版)
2016/01/22 职场文书
高一语文教学反思
2016/02/16 职场文书
七年级数学教学反思
2016/02/17 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP