目录

前言

今天讲的是,有关sympy的微积分部分的知识。

对应官网的知识:Calculus

官网教程

https://docs.sympy.org/latest/tutorial/calculus.html

(一)求导数-diff()

1.一阶求导-diff()

(1)说明:

语法是:diff(expr,x)

(2)源代码:

from sympy import *

# 初始化
x = symbols('x') # 表达式
expr1 = cos(x) expr2 = exp(x**2) # 求导
r1 = diff(expr1, x)
r2 = diff(expr2, x) print("r1:", r1)
print("r2:", r2)

(3)输出:

\(\cos(x)\) --> \(-\sin(x)\)

\(e^{x^2}\) --> \(2xe^{x^2}\)

2.多阶求导-diff()

(1)说明:

多阶求导同样的使用diff(),其有两种形式

  1. 带参数中,添加几个x,就是对x的几次求导。diff(expr, x, x,x……)
  2. 用数字来控制所求的阶数:diff(expr, x, n)

(2)源代码:

from sympy import *

# 初始化
x = symbols('x') # 表达式
expr1 = x**4 # 第一种形式多阶求导
r1 = diff(expr1, x)
r2 = diff(expr1, x, x)
r3 = diff(expr1, x, x, x) print("="*30)
print(r1)
print(r2)
print(r3) # 第二种形式多阶求导
r4 = diff(expr1, x, 1)
r5 = diff(expr1, x, 2)
r6 = diff(expr1, x, 3) print("="*30)
print(r4)
print(r5)
print(r6)

(3)输出:

\(x^4\) --> \(24x\)

3.求偏导数-diff()

(1)说明:

diff()也可以单独对一个变量求导,这便是偏导数。

(2)源代码:

from sympy import *

# 初始化
x, y, z = symbols('x y z') # 表达式
expr1 = exp(x*y*z) # 求导
r1 = diff(expr1, x, y, y, z, z, z, z)
r2 = diff(expr1, x, 1, y, 2, z, 4) print("r1:", r1)
print("r2:", r2) print(latex(r1))
print(latex(r2))

(3)输出:

\(e^{xyz}\) --> \(x^{3} y^{2} \left(x^{3} y^{3} z^{3} + 14 x^{2} y^{2} z^{2} + 52 x y z + 48\right) e^{x y z}\)

(二)求积分-integrate()

(1)说明:

求积分有三种形式,并且都用的是integrate()方法

  1. 求不定积分:integrate(expr, var)
  2. 求定积分:integrate(expr, (var, min, max))
  3. 求多重积分:integrate(expr, (var1, min, max),(var2,min,max))

(2)源代码:

from sympy import *

# 初始化
x, y = symbols('x y') # 表达式
expr1 = cos(x)
expr2 = exp(-x)
expr3 = exp(-x**2-y**2) # 求不定积分
r1 = integrate(expr1, x) # 求定积分
r2 = integrate(expr2, (x, 0, oo)) # 求多重积分
r3 = integrate(expr3, (x, -oo, oo), (y, -oo, oo)) print("r1:", r1)
print("r2:", r2)
print("r3:", r3)

(3)输出:

\(\cos{\left (x \right )}\)-->\(\sin{\left (x \right )}\)

\(\int_{0}^\infty{e^{- x}dx}​\)-->\(1​\)

\(\int_{-\infty}^\infty \int_{-\infty}^\infty e^{- x^{2} - y^{2}}dxdy\)-->\(\pi\)

(三)求极限-limit()

(1)说明:

求极限使用limit(),其有下两种使用方法:

  1. 趋进某个点的极限:limit(expr, var, doit)
  2. 从侧边趋进某个值的极限:limit(expr, var,doit, "+") (左侧趋进同理)

注:sympy里,不可以使用无穷的趋进。

(2)源代码:

from sympy import *

# 初始化
x = symbols('x') # 表达式
expr1 = sin(x)/x
expr2 = 1/x # 求趋于某个值的极限
r1 = limit(expr1, x, 0) # 正向趋进
r2 = limit(expr2, x, 0, '+') # 负向趋进
r3 = limit(expr2, x, 0, '-') print(r1)
print(r2)
print(r3)

(3)输出:

\(\lim_{x \to 0}\sin(x)/x\)-->\(1\)

\(\lim_{x \to 0^+}​\)-->\(\infty​\)

\(\lim_{x \to 0^-}\)-->\(-\infty​\)

(四)级数展开-series()

1.说明:

级数展开请使用:series(expr, x0, xn),使用.removeO()去除尾数。

2.源代码:

from sympy import *

# 初始化
x = symbols('x') # 表达式
expr1 = exp(sin(x)) # 级数展开
r1 = expr1.series(x, 0, 6) # 去除尾数
r2 = expr1.series(x, 0, 6).removeO() print(r1)
print(r2)

3.输出:

\(e^{\sin(x)}​\)-->\(1 + x + \frac{x^{2}}{2} - \frac{x^{4}}{8} - \frac{x^{5}}{15} + O\left(x^{6}\right)​\)

\(e^{\sin(x)}\)-->\(- \frac{x^{5}}{15} - \frac{x^{4}}{8} + \frac{x^{2}}{2} + x + 1​\)

作者:Mark

日期:2019/03/17 周日

5.4Python数据处理篇之Sympy系列(四)---微积分的更多相关文章

  1. 4.4Python数据处理篇之Matplotlib系列(四)---plt.bar()与plt.barh条形图

    目录 目录 前言 (一)竖值条形图 (二)水平条形图 1.使用bar()绘制: 2.使用barh()绘制: (三)复杂的条形图 1.并列条形图: 2.叠加条形图: 3.添加图例于数据标签的条形图: 目 ...

  2. 3.4Python数据处理篇之Numpy系列(四)---ndarray 数组的运算

    目录 目录 (一)数组与标量的运算 1.说明: 2.实例: (二)元素级的运算(一元函数) 1.说明: 2.实例: (三)数组级的运算(二元函数) 1.说明: 2.实例: 目录 1.数组与标量的运算 ...

  3. 5.6Python数据处理篇之Sympy系列(六)---矩阵的操作

    目录 目录 前言 (一)矩阵的创建-Matrix() 1.说明: 2.源代码: 3.输出: (二)常用的构造矩阵 1.说明: 2.源代码: 3.输出: (三)基本操作 1.说明: 2.源代码: 3.输 ...

  4. 5.5Python数据处理篇之Sympy系列(五)---解方程

    目录 目录 前言 (一)求解多元一次方程-solve() 1.说明: 2.源代码: 3.输出: (二)解线性方程组-linsolve() 1.说明: 2.源代码: 3.输出: (三)解非线性方程组-n ...

  5. 5.3Python数据处理篇之Sympy系列(三)---简化操作

    目录 5.3简化操作 目录 前言 (一)有理数与多项式的简化 1.最简化-simplify() 2.展开-expand() 3.提公因式-factor() 4.合并同类项-ceiling() 5.简化 ...

  6. 5.2Python数据处理篇之Sympy系列(二)---Sympy的基本操作

    目录 目录 前言 (一)符号的初始化与输出设置-symbol() symbols() latex() 1.作用: 2.操作: (二)替换符号-subs(old,new) 1.说明: 2.源代码: 3. ...

  7. 5.1Python数据处理篇之Sympy系列(一)---Sympy的大体认识

    目录 目录 前言 目录 前言 sympy是python一个强大的数学符号运算第三方库,具体的功能请看下面操作 官网教程: https://docs.sympy.org/latest/tutorial/ ...

  8. 4.14Python数据处理篇之Matplotlib系列(十四)---动态图的绘制

    目录 目录 前言 (一)需求分析 (二)随机数的动态图 1.思路分析: 2.源代码: 2.输出效果: 目录 前言 学习matplotlib已经到了尾声,没有必要再继续深究下去了,现今只是学了一些基础的 ...

  9. 4.13Python数据处理篇之Matplotlib系列(十三)---轴的设置

    目录 目录 前言 (一)设置轴的范围 1.同时对于x,y轴设置 2.分别对与x,y轴的设置 (二)设置刻度的大小 1.普通的刻度设置 2.添加文本的刻度设置 3.主副刻度的设置 (三)设置轴的数据 1 ...

随机推荐

  1. scala转换date提取年月日时分秒

    从数据库提取出来的时间为 String 格式,现在需要转换为 date 并提取出里面的 小时 时间段: import java.text.SimpleDateFormat import java.ut ...

  2. 【Spark篇】---Spark中yarn模式两种提交任务方式

    一.前述 Spark可以和Yarn整合,将Application提交到Yarn上运行,和StandAlone提交模式一样,Yarn也有两种提交任务的方式. 二.具体      1.yarn-clien ...

  3. 轮询、长轮询与Web Socket的前端实现

    Web Socket 应用场景:实现即时通讯:如股票交易行情分析.聊天室.在线游戏等,替代轮询和长轮询 轮询 轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由 ...

  4. synchronize 关键字原理

    众所周知 synchronized 关键字是解决并发问题常用解决方案,有以下三种使用方式: 同步普通方法,锁的是当前对象. 同步静态方法,锁的是当前 Class 对象. 同步块,锁的是 () 中的对象 ...

  5. Zabbix通过IPMI监控HPE服务器硬件

    IPMI是智能型平台管理接口(Intelligent Platform Management Interface)的缩写,是管理基于 Intel结构的企业系统中所使用的外围设备采用的一种工业标准,该标 ...

  6. NIO 简介

    上文我们描述了五中IO类型.第一种同步阻塞模型我们我们称之为BIO(Blocking IO), 第三种IO复用模型我们称之为NIO(Nonblocking IO). 上图我们可以很容易的发现 BIO会 ...

  7. [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义

    前言简介 class文件是源代码经过编译后的一种平台中立的格式 里面包含了虚拟机运行所需要的所有信息,相当于 JVM的机器语言 JVM全称是Java Virtual Machine  ,既然是虚拟机, ...

  8. JS引擎线程的执行过程的三个阶段(二)

    继续JS引擎线程的执行过程的三个阶段(一) 内容, 如下: 三. 执行阶段 1. 网页的线程 永远只有JS引擎线程在执行JS脚本程序,其他三个线程只负责将满足触发条件的处理函数推进事件队列,等待JS引 ...

  9. Docker网络(五)--技术流ken

    本章内容 1.dokcer默认自带的几种网络介绍 2. 自定义网络 3. 容器间通信 4. 容器与外界交互 docker网络分为单个主机上的容器网络和多个主机上的哇网络,本文主要讲解单个主机上的容器网 ...

  10. Creating a ROS msg and srv

    msg: msg files are simple text files that describe the fields of a ROS message. They are used to gen ...