使用Python中的Sympy库解决高等数学中极限、导数、偏导数、定积分、不定积分、双重积分等问题


Sympy是一个Python的科学计算库,它旨在成为功能齐全的计算机代数系统。 SymPy 包括从基本符号算术到微积分,代数,离散数学和量子物理学的功能。 它可以在 LaTeX 中显示结果。

Sympy官网

文章目录

  • 1. 实用技巧
    • 1.1 符号函数
    • 1.2 展开表达式expand
    • 1.3 泰勒展开公式series
    • 1.4 符号展开
  • 2. 求极限limit
  • 3. 求导diff
    • 3.1 一元函数
    • 3.2 多元函数
  • 4. 积分integrate
    • 4.1 定积分
    • 4.2 不定积分
    • 4.3 双重积分
  • 5. 求解方程组solve
  • 6. 计算求和式summation

看到这图,是不是感觉快喘不过气了呢。Python来帮你解决。

from sympy import *
import sympy

输入“x= symbols(“x”)”命令定义一个符号

x = Symbol("x")
y = Symbol("y")

1. 实用技巧

1.1 符号函数

sympy提供了很多数学符号,总结如下

  • 虚数单位
sympy.I
  • 自然对数
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)

1.2 展开表达式expand

f = (1+x)**3
expand(f)

x3+3x2+3x+1\displaystyle x^{3} + 3 x^{2} + 3 x + 1x3+3x2+3x+1

1.3 泰勒展开公式series

ln(1+x).series(x,0,4)

x−x22+x33+O(x4)\displaystyle x - \frac{x^{2}}{2} + \frac{x^{3}}{3} + O\left(x^{4}\right)x−2x2​+3x3​+O(x4)

sin(x).series(x,0,8)

x−x36+x5120−x75040+O(x8)\displaystyle x - \frac{x^{3}}{6} + \frac{x^{5}}{120} - \frac{x^{7}}{5040} + O\left(x^{8}\right)x−6x3​+120x5​−5040x7​+O(x8)

cos(x).series(x,0,9)

1−x22+x424−x6720+x840320+O(x9)\displaystyle 1 - \frac{x^{2}}{2} + \frac{x^{4}}{24} - \frac{x^{6}}{720} + \frac{x^{8}}{40320} + O\left(x^{9}\right)1−2x2​+24x4​−720x6​+40320x8​+O(x9)

(1/(1+x)).series(x,0,5)

1−x+x2−x3+x4+O(x5)\displaystyle 1 - x + x^{2} - x^{3} + x^{4} + O\left(x^{5}\right)1−x+x2−x3+x4+O(x5)

tan(x).series(x,0,4)

x+x33+O(x4)\displaystyle x + \frac{x^{3}}{3} + O\left(x^{4}\right)x+3x3​+O(x4)

(1/(1-x)).series(x,0,4)

1+x+x2+x3+O(x4)\displaystyle 1 + x + x^{2} + x^{3} + O\left(x^{4}\right)1+x+x2+x3+O(x4)

(1/(1+x)).series(x,0,4)

1−x+x2−x3+O(x4)\displaystyle 1 - x + x^{2} - x^{3} + O\left(x^{4}\right)1−x+x2−x3+O(x4)

1.4 符号展开

a = Symbol("a")
b = Symbol("b")
#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)

xa+b\displaystyle x^{a + b}xa+b

2. 求极限limit

limit(sin(x)/x,x,0)

1\displaystyle 11

f2=(1+x)**(1/x)
f2

(x+1)1x\displaystyle \left(x + 1\right)^{\frac{1}{x}}(x+1)x1​

重要极限

f1=sin(x)/x
f2=(1+x)**(1/x)
f3=(1+1/x)**x
lim1=limit(f1,x,0)
lim2=limit(f2,x,0)
lim3=limit(f3,x,oo)
print(lim1,lim2,lim3)
1 E E

dir可以表示极限的趋近方向

f4 = (1+exp(1/x))
f4

e1x+1\displaystyle e^{\frac{1}{x}} + 1ex1​+1

lim4 = limit(f4,x,0,dir="-")
lim4

1\displaystyle 11

lim5 = limit(f4,x,0,dir="+")
lim5

∞\displaystyle \infty∞

3. 求导diff

diff(函数,自变量,求导次数)

3.1 一元函数

求导问题

diff(sin(2*x),x)

2cos⁡(2x)\displaystyle 2 \cos{\left(2 x \right)}2cos(2x)

diff(ln(x),x)

1x\displaystyle \frac{1}{x}x1​

3.2 多元函数

求偏导问题
例如求解该函数对x的偏导和对y的偏导

(x1+x2+6)2+(−x1x2−3x1−3x2+2)2\displaystyle \left(x_{1} + x_{2} + 6\right)^{2} + \left(- x_{1} x_{2} - 3 x_{1} - 3 x_{2} + 2\right)^{2}(x1​+x2​+6)2+(−x1​x2​−3x1​−3x2​+2)2

f关于x的偏导数,y是常量

f = (6+x1+x2)*(6+x1+x2)+(2-3*x1-3*x2-x1*x2)*(2-3*x1-3*x2-x1*x2)
fx = diff(f,x1)

2x1+2x2+(−2x2−6)(−x1x2−3x1−3x2+2)+12\displaystyle 2 x_{1} + 2 x_{2} + \left(- 2 x_{2} - 6\right) \left(- x_{1} x_{2} - 3 x_{1} - 3 x_{2} + 2\right) + 122x1​+2x2​+(−2x2​−6)(−x1​x2​−3x1​−3x2​+2)+12

如果需要求特定点的值,我们可以通过subs()方法来填入

fx.subs({x1: -4, x2: 6})

−344\displaystyle -344−344

4. 积分integrate

4.1 定积分

  • 函数的定积分: integrate(函数,(变量,下限,上限))
  • 函数的不定积分: integrate(函数,变量)
f = x**2 + 1
integrate(f,(x,-1.1))

−1.54366666666667\displaystyle -1.54366666666667−1.54366666666667

integrate(exp(x),(x,-oo,0))

1\displaystyle 11

4.2 不定积分

f = 1/(1+x*x)
integrate(f,x)

atan⁡(x)\displaystyle \operatorname{atan}{\left(x \right)}atan(x)

举例:

from sympy import *
x = Symbol('x'); t = Symbol('t')    # 定义两个变量
lmt = limit((integrate(t*cos(t),(t,0,x))-1+cos(x)) / (sqrt(x*tan(x)+1)-sqrt(x*sin(x)+1)), x,0)
print(lmt)  # -1/3
-1/3

4.3 双重积分

f = (4/3)*x + 2*y
integrate(f,(x,0,1),(y,-3,4))

11.6666666666667\displaystyle 11.666666666666711.6666666666667

5. 求解方程组solve

#解方程组
#定义变量
f1=x+y-3
f2=x-y+5
solve([f1,f2],[x,y])

{x: -1, y: 4}

6. 计算求和式summation

计算求和式可以使用sympy.summation函数,其函数原型为sympy.summation(f, *symbols, **kwargs)


**

sympy.summation(2 * n,(n,1,100))

10100

到这里就结束了,如果对你有帮助,欢迎点赞关注评论,你的点赞对我很重要。在此也祝愿大家可以把数学学好


参考:

https://docs.sympy.org/latest/index.html

Python解决高等数学问题相关推荐

  1. php工程师用的到高等数学吗,学习Python解决高等数学问题

    Python解决高等数学问题,妈妈再也不用担心我的学习 使用Python解决高等数学中极限.导数.偏导数.定积分.不定积分.双重积分等问题Sympy是一个Python的科学计算库,它旨在成为功能齐全的 ...

  2. Python在高等数学和线性代数中的应用

    Python在高等数学和线性代数中的应用 科学运算设计数值运算和符号运算,数值运算可以使用Numpy库和Scipy库,符号运算则可以使用Sympy工具库,数值计算的表达式.矩阵变量中不允许有未定义的自 ...

  3. python积分计算高等数学_Python与高等数学之Python与积分!用Python学数学

    计算机科学的起源是为了解决数学问题,所以,在某种程度上,可以把计算机科学归为数学的一个分支.因此,可以通过使用Python程序来学习高等数学中的知识,如积分.微分等,反之,也可以通过解决数学问题深化P ...

  4. 高德API+Python解决租房问题

    项目简介:编写Python脚本爬取某租房网站的房源信息,利用高德的 js API 在地图上标出房源地点,划出距离工作地点1小时内可到达的范围,附上公交路径规划功能查看不同路径的用时. 本教程由ekCi ...

  5. Python版本的数据结构书_《用Python解决数据结构与算法问题》

    源于经典 数据结构作为计算机从业人员的必备基础,Java, c 之类的语言有很多这方面的书籍,Python 相对较少, 其中比较著名的一本 problem-solving-with-algorithm ...

  6. Python解决The truth value of a Series is ambiguous.md

    Python解决The truth value of a Series is ambiguous.md import pandas as pd data = pd.read_csv('x.csv') ...

  7. python计算学生平均年龄_CodeSalt | Python解决按学生年龄排序的实际问题

    Python解决按学生年龄排序的实际问题 问题:定义一个Class:包含姓名name.性别gender.年龄age,需要按年龄给学生排序. 输入:包含学生对象的List. 输出:按照年龄age进行排序 ...

  8. 用 python 解决汉诺塔问题并附带演示过程

    用 python 解决汉诺塔问题并附带演示过程 参考文章: (1)用 python 解决汉诺塔问题并附带演示过程 (2)https://www.cnblogs.com/shinawear/p/1061 ...

  9. python解决组合问题

    python解决组合问题 参考文章: (1)python解决组合问题 (2)https://www.cnblogs.com/vipchenwei/p/7147488.html (3)https://w ...

  10. python解决鸡兔同笼问题

    python解决鸡兔同笼问题 参考文章: (1)python解决鸡兔同笼问题 (2)https://www.cnblogs.com/xiaolu915/p/10587499.html 备忘一下.

最新文章

  1. __builtin__与__builtins__的区别与关系
  2. Mastercam X9中文版
  3. Adaboost 2
  4. linux+eth0+流量监控,linux流量监控脚本 | 旺旺知识库
  5. 高级数据分析1代码_用Python进行数据分析,让你一看就会
  6. 伺服驱动器cn1引脚定义_英威腾伺服
  7. 不用js也能创建silverlight
  8. 一个demo学会css
  9. 浅谈闪电网络的可行性
  10. 新型开关电源优化设计与实例详解全书.pdf_高频电路设计中,如何应对“不理想”的电容与电感?...
  11. php 电脑的右下角弹框,电脑右下角弹出广告的解决方法
  12. matlab中做出球面和圆柱面,matlab画柱面与球面切线
  13. JAVA 配合 Vue前台,完成中文、拼音全拼、拼音首字母检索
  14. MacBookPro阻止电脑自动下载更新
  15. CF 285 E Positions in Permutations 题解
  16. [1609.04802] SRGAN中的那些loss
  17. mpd、hls视频了解
  18. SEOER应当避免赌徒式的外链操作手法
  19. puuty链接linux时间超时,Putty连接Linux提示timed out的解决办法
  20. EasyPoi的使用(1)

热门文章

  1. can卡通用测试软件LCANTest详细介绍
  2. 开源软件项目常用版本号标识
  3. miRNA数据库篇——RNAcentral
  4. 如何把Mysql卸载干净?(亲测有效)
  5. Red5流媒体服务器搭建
  6. 数据结构面试常见问题总结
  7. stm32实现串口通信和LED灯点亮
  8. sql填充空值_如何在SQL中使用先前的非空值填充稀疏数据
  9. Java语言分为三大平台:JavaSE、JavaEE、JavaME
  10. 计算机系统 I 第二章 逻辑门与逻辑函数化简 学习笔记