使用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
代码语言:javascript复制看到这图,是不是感觉快喘不过气了呢。Python来帮你解决。
from sympy import *
import sympy
输入“x= symbols(“x”)”命令定义一个符号
代码语言:javascript复制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
代码语言:javascript复制f = (1 x)**3
expand(f)
1.3 泰勒展开公式series
代码语言:javascript复制ln(1 x).series(x,0,4)
代码语言:javascript复制sin(x).series(x,0,8)
代码语言:javascript复制cos(x).series(x,0,9)
代码语言:javascript复制(1/(1 x)).series(x,0,5)
代码语言:javascript复制tan(x).series(x,0,4)
代码语言:javascript复制(1/(1-x)).series(x,0,4)
代码语言:javascript复制(1/(1 x)).series(x,0,4)
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)
2. 求极限limit
代码语言:javascript复制limit(sin(x)/x,x,0)
代码语言:javascript复制f2=(1 x)**(1/x)
代码语言:javascript复制f2
重要极限
代码语言: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
代码语言:javascript复制lim4 = limit(f4,x,0,dir="-")
lim4
代码语言:javascript复制lim5 = limit(f4,x,0,dir=" ")
lim5
3. 求导diff
diff(函数,自变量,求导次数)
3.1 一元函数
求导问题
代码语言:javascript复制diff(sin(2*x),x)
代码语言:javascript复制diff(ln(x),x)
3.2 多元函数
求偏导问题 例如求解该函数对x的偏导和对y的偏导
代码语言:javascript复制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)
代码语言:javascript复制如果需要求特定点的值,我们可以通过
subs()
方法来填入
fx.subs({x1: -4, x2: 6})
4. 积分integrate
4.1 定积分
- 函数的定积分: integrate(函数,(变量,下限,上限))
- 函数的不定积分: integrate(函数,变量)
f = x**2 1
integrate(f,(x,-1.1))
代码语言:javascript复制integrate(exp(x),(x,-oo,0))
4.2 不定积分
代码语言:javascript复制f = 1/(1 x*x)
integrate(f,x)
举例:
代码语言: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))
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