我们最开始使用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无穷积分求解_python做微积分相关推荐

  1. matlab无穷积分求解_从零开始的matlab学习笔记——(8)积分

    上节说了说求导,这节就顺带着说一说求积分,凑个完整. 不定积分: 定积分的代码和极限求导都差不多: syms x f; f=(3-x^2)^3; ans1=int(f,x) pretty(ans1) ...

  2. matlab求函数的无穷积分,[求助]贝塞尔函数的无穷积分怎么求解?

    回复: [求助]贝塞尔函数的无穷积分怎么求解? 对于这种积分格式,上限是正无穷,下限是zero,我编了个函数文件,回头你自己把函数的表达式代入就可以了. function I = IntGaussLa ...

  3. matlab显示函数表达式_Matlab求解极限、微积分问题

    MATLAB提供了解决微分和积分微积分的各种方法,求解任何程度的微分方程和极限计算.可以轻松绘制复杂功能的图形,并通过求解原始功能以及其衍生来检查图形上的最大值,最小值和其他固定点. 本章将介绍微积分 ...

  4. matlab 2015 积分,Matlab中如何求解积分?

    一谈起Matlab这款软件我想不少人应该都很了解,它是一款功能强大的数学软件,因此有很多人会下载使用它,但是刚接触它,想用使用它会碰到一些难题,最常见的就是Matlab中如何求解积分了,那么遇到这个问 ...

  5. MATLAB高斯-勒让德积分求解

    MATLAB高斯-勒让德积分求解 积分函数 function [ y ] = CalcuFunctionValue( x ) y=exp(-x^2);%积分函数 end 求积分算法函数 functio ...

  6. matlab中对于xf(x)的积分,[matlab 积分]MATLAB求积分?

    MATLAB求积分? 问题补充:我想用MATLAB求一下这个式子的积分,谁能帮我一下?g(f)=(e^4kxf)/sinh(kctf)未知量是f,最后求出来的式子里保留其他几个字母. ●matcom ...

  7. matlab 2015 积分,浅谈MATLAB在数值积分中的应用

    <浅谈MATLAB在数值积分中的应用.doc>由会员分享,可免费在线阅读全文,更多与<浅谈MATLAB在数值积分中的应用>相关文档资源请在帮帮文库(www.woc88.com) ...

  8. Mathematica做微积分

    微积分 求极限 函数极限 数列极限 递归定义的数列极限 单侧极限 累次极限 渐近线 微商和微分 微商(导数) 全微分 不定积分和定积分 不定积分 定积分 多重积分 级数 幂级数展开 幂级数计算 Fou ...

  9. 在matlab中积分怎样表示,Matlab在积分中的应用.ppt

    Matlab在积分中的应用 Matlab在微积分中的应用 高等数学最基本的概念集中在极限.导数.积分.微分等几个部分,本章主要介绍Matlab在这几方面的应用 一.极限.导数与微分 1.极限 limi ...

最新文章

  1. (二)OpenStack---M版---双节点搭建---数据库安装和配置
  2. 负载测试与压力测试的区别
  3. jsonp的原理·jsonp是不是ajax中实现跨域访问的技术
  4. sqlsession.selectlist 会返回null么_StackOverflow经典问题:代码中如何去掉烦人的“!=nullquot;判空语句...
  5. 抓取新浪的每日星座运势
  6. php mysql购物车实现原理_PHP实现购物车的思路和源码分析
  7. python作业(12.12)
  8. 用ajax向处理页面传送路径问题解决方法
  9. spring boot 在IDEA使用devtools热布署不成功,都没有注意的事!
  10. 自动化测试===Macaca环境搭建,自我总结
  11. 在线密码管理器LastPass遭入侵 官方建议修改主密码
  12. matlab 读取mp3文件,MATLAB音频文件读取
  13. struts2 通配符的配置方式
  14. 怎么清楚计算机硬盘搜索记录,如何去除电脑硬盘删除痕迹
  15. STM32F103C8T6 操作矩阵键盘
  16. dw html 浮动窗口,Dreamweaver怎样实现飘浮光球特效
  17. Adobe系列软件大全
  18. 什么是mvc,mvc有什么用?
  19. 近期iOS开发者问题全面答疑(3)
  20. 电影票务大排行:猫眼第一,淘票票、格瓦拉分列二、三位!

热门文章

  1. FreeImage编译及遇到问题解决
  2. sql server 对象名无效的解决方法
  3. org.springframework.web.context.ContextLoaderListener 解决方案
  4. 【干货】2021中国“企服企业”规模化获客体系建设指南.pdf(附下载链接)
  5. 深度召回算法在字节跳动推荐系统的应用实践
  6. 文字生成视频,只需一步(附论文下载)
  7. 【报告分享】京东大数据202女性消费趋势报告.pdf(附下载链接)
  8. 图形学opengl实验二-桌子的矩阵变换
  9. PTA5-16 一元多项式求导 (20分)
  10. 敢闯会创,第七届中国国际“互联网+”双创大赛腾讯广告产业命题等你来战!