我们最开始使用python基本都是做数值计算的,而在处理数学问题时常常也需要进行一些符号运算,python能否胜任这种需求呢?当然是可以的,我们就以微积分为例,来见识一下python处理符号运算和数值运算的双重能力。需要安装一款python的第三方库sympy,可以直接使用pip3 install sympy来进行安装,也可以通过其他方式安装。本文无意于让大学生完成高等数学作业时投机取巧,不过作为验证自己计算是否正确的工具倒是不错。sympy更有意义的用途是用于科学计算模拟系统运行状况。

1. 变量定义

数学问题中,我们常常需要定义一些自变量,然后使用一组映射作用在这些自变量上构成数学方程。sympy提供了数学符号相关的数据结构Symbol,在进行符号运算之前需要先定义一些自变量符号。单个符号直接使用sympy.Symbol(),多个符号就可以使用sympy.symbols()来进行定义。

符号变量的定义

从以上演示可以看出,sympy中定义了一个sympy.core.symbol.Symbol类,这个类就是sympy进行符号运算最基础的数据结构。

2. 微积分基础

事实上,sympy可以完成高等数学中几乎所有的操作,当然也包括一些基础的运算。而计算微积分的时候我们常常需要具备一些数学运算的基础,比如极限、表达式展开和合并等等,这里顺便演示使用sympy一下。

微积分基础

从以上演示看出,sympy在处理极限、表达式展开和化简等数学基础运算时非常直观,基本与人工手动计算的形式一致。如果你有一个很复杂的带有同类项的表达式,可以使用sympy.simplify函数试试。

3. 一元微积分

我们先来看看一元微积分,即只有一个自变量的微积分。由于普通的python库基本都是进行数值计算的,因此在构建符号函数时不能直接使用,比如numpy;而应该使用sympy中提供的基础符号函数来构建复杂的符号函数,比如sympy.sin(), sympy.exp()等等。计算符号函数导数的方法也很简单,直接使用sympy.diff(),而计算积分可以直接调用sympy.integrate()函数。

一元微积分

一元微积分的符号运算以及对应的数值运算如上图演示。大家可以发现,在计算不定积分时,省略了一个常数项。通常在未给定初值的情况下,我没也不关心这个常数项,与日常计算微积分的情形基本一致。

4. 多元微积分

了解了一元微积分的计算,自然就更想见识一下多元微积分的计算,sympy在这方面也是非常地强大。所使用的接口仍然是diff和integrate这两个函数。通过变量与基础函数的拼接所形成的复杂函数在sumpy中是一个sympy.core.add.Add对象,使用这个对象直接调用diff函数并指定自变量就可以求解对应的偏导数。多重积分的计算与一元积分是相似的,只是需要传入想要进行积分运算的符号自变量。

多元微积分

5. 微分方程

基本的微积分运算都了解了,但是微积分中一类非常常见的问题还是有必要演示一下,即微分方程的求解。sympy可以求解普通的方程或者方程组是理所当然的,那么对于微分方程的求解是否也那么顺利呢?sympy对方程组的求解函数与matlab是一致的,这对于从matlab迁移到python的朋友来说是个很不错的消息。手动解算过微分方程的朋友都应该知道,微分方程的基础是建立在一个未知函数的导数之上的,那么这个未知的函数该如何表示这是个问题。在sympy中,使用sympy.Function()接口创建这个未知的函数,然后利用这个函数构建微分方程,使用dsolve求解。

微分方程

到此,使用sympy模块进行微积分符号和数值计算的演示完毕。最开始我们处理这类问题的首选是matplab,等到掌握sympy之后,就没有再使用matlab的动力了。sympy不仅是免费的,而且轻量级,使用过程与matlab一样方便。本文的notebook版文件在github上的cnbluegeek/notebook仓库中共享,欢迎感兴趣的朋友下载。

matlab imcrop 对应python函数_python做微积分相关推荐

  1. matlab imcrop 对应python函数_Python精讲Numpy基础,大牛笔记详细解释

    总认为Numpy是渣渣,直到深入接触以后才知道功能这么强大.堪比Matlab啊.果然是人生苦短,我用Python.所以本文作为一个记录&笔记,文章内容大多数取自网络以&官网快速入门等, ...

  2. matlab imcrop 对应python函数_MATLAB车牌识别之7个字符切割浅谈【抽丝剥茧】

    车牌识别的7个字符切割,可能大家都听过是所谓的连通域法切割,可是何为连通域呢,估计98.98%的朋友,包括绝大部分老师都不知道所以然,今天就该问题抽丝剥茧进行讲解. 先来一段代码: % 7个分割字符 ...

  3. matlab无穷积分求解_python做微积分

    我们最开始使用python基本都是做数值计算的,而在处理数学问题时常常也需要进行一些符号运算,python能否胜任这种需求呢?当然是可以的,我们就以微积分为例,来见识一下python处理符号运算和数值 ...

  4. python扫雷_python做扫雷

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文为大家分享了python实现扫雷游戏的具体代码,供大家参考,具体内容如下本文 ...

  5. c调用python函数_python - Linux C调用Python 函数

    1.Python脚本,名称为py_add.py def add(a=,b=): print('Function of python called!') print('a = ',a) print('b ...

  6. 五分钟学会python函数_Python——带你五分钟了解函数式编程与闭包

    今天是Python专题的第9篇文章,咱们来聊聊Python的函数式编程与闭包.编程 函数式编程 函数式编程这个概念咱们可能或多或少都据说过,刚据说的时候不明觉厉,以为这是一个很是黑科技的概念.可是实际 ...

  7. map python函数_Python语言中map函数

    本文主要向大家介绍了Python语言中map函数,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 1.对可迭代函数'iterable'中的每一个元素应用'function'方法,将 ...

  8. 什么是python函数_Python之什么是函数

    Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数 abs,它接收一个参数. 可以直接从Python的官方网站查看文档: http:// ...

  9. parse python函数_Python之urlparse模块

    一.简介 urlparse库用于把url解析为各个组件,支持file,ftp,http,https, imap, mailto, mms, news, nntp, prospero, rsync, r ...

  10. parse python函数_Python爬虫 - parse模块常用方法

    url.parse:定义了url的标准接口,实现url的各种抽取 parse模块的使用:url的解析.合并.编码.解码 使用时需导入 from urllib import parse urlparse ...

最新文章

  1. 洛谷P2397 yyy loves Maths VI (mode) 摩尔投票
  2. 微信内测版抢先体验,可发 4K 无损视频
  3. VTK:IO之ReadDICOM
  4. 史迪仔的原型_星际宝贝三个版本对比,莉罗抛弃史迪仔,童年真的回不去了
  5. android wifi设备连接通信,通过wifi与设备进行通信(Android)
  6. jQuery概述、优点、使用步骤、入口函数、jQuery对象和DOM对象之间的转换、层级选择器、属性选择器、筛选选择器、节点选择器
  7. 自己定制树莓派Linux内核的步骤
  8. 全国重点城市建筑物矢量数据合集四(Shp格式+带高度)
  9. GAN(生成对抗网络)有一本实战书出版了,了解下?
  10. PyQt自定义控件之实现圆形图片
  11. Kubernetes 学习总结(24)—— Kubernetes 滚动更新、蓝绿发布、金丝雀发布等发布策略详解
  12. IT人二十年后再定位
  13. 机器学习python代码
  14. 编程利器!有道词典命令行快速翻译
  15. python3 练习题100例 (十六)鸡尾酒疗法
  16. python热图_Python-Seaborn热图绘制的实现方法
  17. java导出pdf字体宋体不加粗_java – 飞碟(xhtmlrenderer)没有加粗我的字体?
  18. SIwave仿真手册——信号完整性仿真之S参数的提取(二)
  19. 风电功率预测matlab,MatlAB毕业论文:风电功率预测问题.doc
  20. 2019年营销经典案例

热门文章

  1. springboot报错:Use of @OneToMany or @ManyToMany targeting an unmapped class:
  2. MTK 修改ro.hardware 获取cpu 和固件版本号方法
  3. 世纪难题相关问题被证明!?——黎曼猜想的前后今生
  4. h5将word转为html,怎么把Word版通知转化成H5版
  5. mysql 查询条件为空则_MySql当查询条件为空时不作为条件查询
  6. 省时又省力的次世代角色流程也太!香!了!
  7. 安卓稳定性测试必备工具Monkey详解
  8. 笔记本计算机并行口什么开启,笔记本连接电脑台式机的方法
  9. 用AliDDNS脚本实现动态域名
  10. c语言2的n次方编程利用数组,1.6编程基础之一维数组_12计算2的N次方