前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python解决高等数学问题

Python解决高等数学问题

作者头像
北山啦
发布2022-11-27 13:43:37
2.2K0
发布2022-11-27 13:43:37
举报
文章被收录于专栏:北山啦的博客北山啦的博客

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

在这里插入图片描述
在这里插入图片描述

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

Sympy官网

文章目录

在这里插入图片描述
在这里插入图片描述

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

代码语言:javascript
复制
from sympy import *
import sympy

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

代码语言:javascript
复制
x = Symbol("x")
y = Symbol("y")

1. 实用技巧

1.1 符号函数

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

  • 虚数单位
代码语言:javascript
复制
sympy.I
  • 自然对数
代码语言:javascript
复制
sympy.E 
  • 无穷大
代码语言:javascript
复制
sympy.oo
  • 圆周率
代码语言:javascript
复制
 sympy.pi
  • 求n次方根
代码语言:javascript
复制
 sympy.root(8,3)
  • 取对数
代码语言:javascript
复制
sympy.log(1024,2)
  • 求阶乘
代码语言:javascript
复制
sympy.factorial(4)
  • 三角函数
代码语言:javascript
复制
sympy.sin(sympy.pi)
sympy.tan(sympy.pi/4)
sympy.cos(sympy.pi/2)

1.2 展开表达式expand

代码语言:javascript
复制
f = (1+x)**3
expand(f)
\displaystyle x^{3} + 3 x^{2} + 3 x + 1

1.3 泰勒展开公式series

代码语言:javascript
复制
ln(1+x).series(x,0,4)
\displaystyle x - \frac{x^{2}}{2} + \frac{x^{3}}{3} + O\left(x^{4}\right)
代码语言:javascript
复制
sin(x).series(x,0,8)
\displaystyle x - \frac{x^{3}}{6} + \frac{x^{5}}{120} - \frac{x^{7}}{5040} + O\left(x^{8}\right)
代码语言:javascript
复制
cos(x).series(x,0,9)
\displaystyle 1 - \frac{x^{2}}{2} + \frac{x^{4}}{24} - \frac{x^{6}}{720} + \frac{x^{8}}{40320} + O\left(x^{9}\right)
代码语言:javascript
复制
(1/(1+x)).series(x,0,5)
\displaystyle 1 - x + x^{2} - x^{3} + x^{4} + O\left(x^{5}\right)
代码语言:javascript
复制
tan(x).series(x,0,4)
\displaystyle x + \frac{x^{3}}{3} + O\left(x^{4}\right)
代码语言:javascript
复制
(1/(1-x)).series(x,0,4)
\displaystyle 1 + x + x^{2} + x^{3} + O\left(x^{4}\right)
代码语言:javascript
复制
(1/(1+x)).series(x,0,4)
\displaystyle 1 - x + x^{2} - x^{3} + O\left(x^{4}\right)

1.4 符号展开

代码语言:javascript
复制
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)
\displaystyle x^{a + b}

2. 求极限limit

代码语言:javascript
复制
limit(sin(x)/x,x,0)
\displaystyle 1
代码语言:javascript
复制
f2=(1+x)**(1/x)
代码语言:javascript
复制
f2
\displaystyle \left(x + 1\right)^{\frac{1}{x}}

重要极限

代码语言:javascript
复制
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)
代码语言:javascript
复制
1 E E

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

代码语言:javascript
复制
f4 = (1+exp(1/x))
f4
\displaystyle e^{\frac{1}{x}} + 1
代码语言:javascript
复制
lim4 = limit(f4,x,0,dir="-")
lim4
\displaystyle 1
代码语言:javascript
复制
lim5 = limit(f4,x,0,dir="+")
lim5
\displaystyle \infty

3. 求导diff

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

3.1 一元函数

求导问题

代码语言:javascript
复制
diff(sin(2*x),x)
\displaystyle 2 \cos{\left(2 x \right)}
代码语言:javascript
复制
diff(ln(x),x)
\displaystyle \frac{1}{x}

3.2 多元函数

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

\displaystyle \left(x_{1} + x_{2} + 6\right)^{2} + \left(- x_{1} x_{2} - 3 x_{1} - 3 x_{2} + 2\right)^{2}

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

代码语言:javascript
复制
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)
\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) + 12

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

代码语言:javascript
复制
fx.subs({x1: -4, x2: 6})
\displaystyle -344

4. 积分integrate

4.1 定积分

  • 函数的定积分: integrate(函数,(变量,下限,上限))
  • 函数的不定积分: integrate(函数,变量)
代码语言:javascript
复制
f = x**2 + 1
integrate(f,(x,-1.1))
\displaystyle -1.54366666666667
代码语言:javascript
复制
integrate(exp(x),(x,-oo,0))
\displaystyle 1

4.2 不定积分

代码语言:javascript
复制
f = 1/(1+x*x)
integrate(f,x)
\displaystyle \operatorname{atan}{\left(x \right)}

举例:

代码语言:javascript
复制
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
代码语言:javascript
复制
-1/3

4.3 双重积分

代码语言:javascript
复制
f = (4/3)*x + 2*y
integrate(f,(x,0,1),(y,-3,4))
\displaystyle 11.6666666666667

5. 求解方程组solve

代码语言:javascript
复制
#解方程组
#定义变量
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)

加粗样式
加粗样式

**

代码语言:javascript
复制
sympy.summation(2 * n,(n,1,100))

10100

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


参考:

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 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
                    相关产品与服务
                    对象存储
                    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档