python计算微积分

Posted 阿强真

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python计算微积分相关的知识,希望对你有一定的参考价值。

python计算微积分

本文将使用sympy库计算微积分pip install sympy

符号说明: 默认导入库的方式为from sympy import *

一.计算极限

limit(f,x,h)f是表达式,x是对谁求极限,h是x趋于多少
lim ⁡ x → 0 sin ⁡ x − tan ⁡ x + e tan ⁡ x − 1 x − tan ⁡ x + sin ⁡ x \\\\ \\lim_x\\rightarrow 0 \\frac\\sin x-\\tan x+e^\\tan x-1x-\\tan x+\\sin x \\\\ x0limxtanx+sinxsinxtanx+etanx1

from sympy import *
x=Symbol("x")
f=(sin(x)-tan(x)+exp(tan(x))-1)/(x-tan(x)+sin(x))
limit(f,x,0)#如果没有输出结果请print(limit(f,x,0))

输出结果为1

二.求导数

1.求一阶导数

求 x 4 + x 3 + x + 1 的一阶导数 求 x^4+x^3+x+1的一阶导数 x4+x3+x+1的一阶导数

from sympy import *
x=Symbol("x")
expr=x**4+x**3+x+1
expr.diff(x)#注意如果没有输出任何内容,请使用print(expr.diff(x)),以下同理

2.求高阶导数


求 sin ⁡ x 的 100 阶导数 求 \\sin x的100阶导数 sinx100阶导数

from sympy import *
x=Symbol("x")
expr=sin(x)
expr.diff(x,100)

3.多元函数求导

f ( x , y ) = ( x + 1 ) 3 y 2 ( z − 1 ) ( 其中 z 是常数 ) 求 : ∂ 2 f ( x , y ) ∂ x ∂ y f\\left( x,y \\right) =\\left( x+1 \\right) ^3y^2\\left( z-1 \\right) \\left( \\text其中z\\text是常数 \\right) \\\\ \\text求:\\frac\\partial ^2f\\left( x,y \\right)\\partial x\\partial y f(x,y)=(x+1)3y2(z1)(其中z是常数):xy2f(x,y)

#多元函数
from sympy import *
x=Symbol("x")
y=Symbol('y')
z=Symbol("z")
expr=(x+1)**3*y**2*(z-1)
expr.diff(x,y)

4.多元函数求高阶导数

f ( x , y ) = ( x + 1 ) 3 y 2 ( z − 1 ) ( 其中 z 是常数 ) 求 : ∂ 3 f ( x , y ) ∂ x 2 ∂ y f\\left( x,y \\right) =\\left( x+1 \\right) ^3y^2\\left( z-1 \\right) \\left( \\text其中z\\text是常数 \\right) \\\\ \\text求:\\frac\\partial ^3f\\left( x,y \\right)\\partial x^2\\partial y f(x,y)=(x+1)3y2(z1)(其中z是常数):x2y3f(x,y)

from sympy import *
x=Symbol("x")
y=Symbol('y')
z=Symbol("z")
expr=(x+1)**3*y**2*(z-1)
expr.diff(x,2,y,1)#注意这里2和1的位置

三.计算积分

1.不定积分

计算 ∫ x 5 sin ⁡ x d x \\text计算\\intx^5\\sin xdx 计算x5sinxdx

from sympy import *
x=Symbol("x")
expr=x**5*sin(x)
integrate(expr,x)#如果输出为空,就换为print(integrate(expr,x))

2.计算定积分

∫ 0 ∞ ln ⁡ x sin ⁡ x d x \\int_0^\\infty\\ln x\\sin xdx 0lnxsinxdx

无穷大的表示:oo(没错就是两个o)

from sympy import *
x=Symbol("x")
expr=log(x)*sin(x)
integrate(expr,(x,0,oo))

抱歉,他不收敛,返回我输入的表达式了,我们换一个

计算: ∫ 0 ∞ a sin ⁡ ( x cos ⁡ x ) d x \\displaystyle\\int_0^\\inftya\\sin \\left( x\\cos x \\right)dx 0asin(xcosx)dx,其中a为常数

呃呃呃,这个有点难算,又返回原函数了,但是这个是发散的吗?

我有点不服啊,掏出我的Wolfram Mathematic试试,好吧,咱也看不懂,总之就是这样计算的

3.计算二重积分

∬ ( x + sin ⁡ y ) e x d x d y \\iint\\left( x+\\sin y \\right) e^xdxdy (x+siny)exdxdy

from sympy import *
x=Symbol("x")
y=Symbol("y")
expr=(x+sin(y))*exp(x)
integrate(expr,x,y)
$$ \\int_0^1\\int_0^1\\left( x+\\sin y \\right) e^xdxdy $$
from sympy import *
x=Symbol("x")
y=Symbol("y")
expr=(x+sin(y))*exp(x)
integrate(expr,(x,0,1),(y,0,1))

四.级数展开

cos ⁡ x 在 x = 0 处 3 阶展开 \\cos x\\text在x=0\\text处3\\text阶展开 cosxx=03阶展开

from sympy import *
x=Symbol("x")
cos(x).series(x,0,n=3)#偶数项展开为0,所以只有两项

我们可以不写后面的0和n,因为默认是在0处展开

e x e^x ex的泰勒展开

from sympy import *
x=Symbol("x")
# cos(x).series(x,0,n=3)
exp(x).series(x)

任意表达式的展开

f ( x ) = cos ⁡ ( x ) 1 + sin ⁡ ( x y ) 在 x = 0 处展开四阶 f\\left( x \\right) =\\frac\\cos \\left( x \\right)1+\\sin \\left( xy \\right)\\text在x=0\\text处展开四阶 f(x)=1+sin(xy)cos(x)x=0处展开四阶

from sympy import *
x,y=symbols("x,y")#注意这里是symbols
expr=cos(x)/(1+sin(x*y))
expr.series(x,n=4)

以上是关于python计算微积分的主要内容,如果未能解决你的问题,请参考以下文章

利用Python计算积分

Python 基于积分原理计算定积分并可视化数值积分计算的动画过程

Python 基于积分原理计算定积分并可视化数值积分计算的动画过程

Python科学计算系列6—积分

python计算微积分

复化梯形求积分——用Python进行数值计算