sympy分析函数的极限

文章目录

    • 极限
    • 阶数
    • 泰勒展开

极限

sympy.series.limits提供了与极限有关的函数,比如最基础的limit,可用于求解极限

from sympy import limit, sin, oo
from sympy.abc import x
limit(sin(x)/x, x, 0)   # 1
limit(1/x, x, oo)       # 0

其输入的三个参数分别表示函数表达式,被取极限的变量,以及变量趋向的极限位置。

limit函数有一个可选参数dir,表示逼近极限时的方向,可选+, -或者+-,默认为+,以 lim ⁡ x → 0 1 x \lim_{x\to0}\frac{1}{x} limx0x1为例,当dir取值不同时,其返回值亦不相同

dir “+” “-” “±”
返回值 oo -oo zoo

阶数

众所周知,无穷大和无穷小在做四则混合运算的时候会出现不定式,解决这种不定式的关键就是认清不同无穷的阶数。sympy中提供了Order工具,即可胜任此工作。

from sympy import Symbol, Order
x = Symbol('x')
Order(x + x**2)     # O(x)
Order(x + 1)        # O(1)

其含义是, x + x 2 x+x^2 x+x2 x x x趋近于0时,可约等于 x x x

Order实质上是一个类,构造时可输入三个参数,分别是函数表达式和限定条件,例如想求 lim ⁡ x → ∞ x 2 + x \lim_{x\to\infty}x^2+x limxx2+x的阶数,则需如下用法

Order(x + x**2, (x, oo))
# O(x**2, (x, oo))

上述代码表明,当 x → ∞ x\to\infty x时, x 2 + x x^2+x x2+x等于 x 2 x^2 x2

此外,sympy中提供了Order类的简化写法O。

泰勒展开

泰勒展开是分析复杂函数极限的重要工具,sympy中的series便提供泰勒展开的功能,示例如下

from sympy import series
x = Symbol('x')
series(sin(x),x)
# x - x**3/6 + x**5/120 + O(x**6)

其含义是

sin ⁡ ( x ) = x − x 3 3 ! + x 5 5 ! + O ( x 6 ) \sin(x)=x-\frac{x^3}{3!}+\frac{x^5}{5!}+O(x^6) sin(x)=x3!x3+5!x5+O(x6)

这个示例中,series输入了两个参数,分别是表达式和变量,此外还有3个参数

  • x0 x的计算位置,默认为0
  • n 泰勒展开的阶数,默认为6
  • dir 极限逼近的方向,默认"+"

如果给出另一个位置,比如 x 0 = 0 , 5 x_0=0,5 x0=0,5,则返回值如下

series(sin(x),x, 0.5)
# 0.0406342576590166 - 0.239712769302102*(x - 0.5)**2 - 0.146263760315062*(x - 0.5)**3 + 0.0199760641085085*(x - 0.5)**4 + 0.00731318801575311*(x - 0.5)**5 + 0.877582561890373*x + O((x - 1/2)**6, (x, 1/2))

0.0406342576590166 + 0.877582561890373 x − 0.239712769302102 ( x − 0.5 ) 2 − 0.146263760315062 ( x − 0.5 ) 3 + 0.0199760641085085 ( x − 0.5 ) 4 + 0.00731318801575311 ( x − 0.5 ) 5 + O ( ( x − 1 / 2 ) 6 , ( x , 1 / 2 ) ) 0.0406342576590166 + 0.877582561890373x\\ - 0.239712769302102(x - 0.5)^2 - 0.146263760315062(x - 0.5)^3\\ + 0.0199760641085085(x - 0.5)^4 + 0.00731318801575311(x - 0.5)^5\\ + O((x - 1/2)^6, (x, 1/2)) 0.0406342576590166+0.877582561890373x0.239712769302102(x0.5)20.146263760315062(x0.5)3+0.0199760641085085(x0.5)4+0.00731318801575311(x0.5)5+O((x1/2)6,(x,1/2))

你可能感兴趣的:(#,sympy,Python,符号计算,极限,limit,sympy)