[SymPy] 関数の極限値

[SymPy] 関数の極限値

関数の極限値

 関数 $f(x)$ について、変数 $x$ を限りなく $a$ の値に近づけるときに $f(x)$ が唯一の値 $L$ に近づくならば、$L$ を $f(x)$ の 極限値 とよび、次のような記号で表します。
 
\[\lim_{x\rightarrow a}f(x)=L\]
 たとえば $f(x)=x^2+c$ について、$x$ を限りなく $1$ に近づけたときの $f(x)$ の極限値は $f(1)=1+c$ となります:
 
\[\lim_{x\rightarrow 1}(x^2+c)=1+c\]
 極限値が常に存在するとは限りません。たとえば $\sin x$ は $-1$ と $1$ の間を振動する周期関数なので、$x\rightarrow +\infty$ を定めることができません。

sympy.limit()

 sympy.limit() を使うと関数の極限値を得ることができます。
 たとえば、$\displaystyle\lim_{x\rightarrow a}f(x)$ は次のように記述します。

sympy.limit(f(x), x, a)

 解析学で有名な極限公式
 
\[\lim_{x\rightarrow 0}\frac{\sin x}{x}=1\]
を確認してみましょう。

# PYTHON_SYMPY_LIMIT_01-1

# sympyをインポート
import sympy

# 記号xを定義
sympy.var('x')

# y=sinx/x
y = sympy.sin(x)/x

# x→0の極限値
lim_y = sympy.limit(fx, x, 0)

print(lim_y)

# グラフをプロット
p = sympy.plot(y, (x, -12, 12), ylabel = "y")
1

 極限値の計算:sympy.limit()
 
 微分積分学では次の極限公式もよく登場します。
 
\[\begin{align*}
&\lim_{x\rightarrow 0}\frac{\tan x}{x}=1\\[6pt]
&\lim_{x\rightarrow 0}\frac{1-\cos x}{x^2}=\frac{1}{2}\end{align*}\] 

# PYTHON_SYMPY_LIMIT_01-2

# f(x)とg(x)を定義
fx = sympy.tan(x)/x
gx = (1-sympy.cos(x)) / x**2

# x → 0
lim_fx = sympy.limit(fx, x, 0)
lim_gx = sympy.limit(gx, x, 0)

print([lim_fx, lim_gx])
[1, 1/2]

 
 $x\sin (1/x)$ は振動しながら原点に収束する関数です。
 
\[\lim_{x\rightarrow 0}x\sin\frac{1}{x}=0\] 

# PYTHON_SYMPY_LIMIT_01-3

# y=sin(1/x)
y = x * sympy.sin(1/x)

# x→0
lim_y = sympy.limit(y, x, 0)

print(lim_y)

# グラフをプロット
p = sympy.plot(y, (x, -0.1, 0.1), ylabel = "y", line_color="red")
0

 振動関数の極限値:sympy.limit()

極限値が存在しない場合

 $\sin x$ は $x\rightarrow \infty$ の極限値をもちませんが、その場合でも $-1$ から $1$ の間で振動することを <-1, 1> という記号で表示します。

# PYTHON_SYMPY_LIMIT_02

import sympy

# 記号xを定義
sympy.var('x')

# 無限大の定義
oo = sympy.oo

# f(x) = sinx
fx = sympy.sin(x)

# x → 0
lim_fx = sympy.limit(fx, x, oo)

print(lim_fx)
<-1, 1>

 

右側極限と左側極限

 解析学では関数 $f(x)$ がある値 $a$ に $x$ 軸の正の方向から近づくときの極限値を右側極限、負の方向から近づくときの極限値を左側極限とよび、それぞれ $\displaystyle\lim_{x\rightarrow a+0}f(x)$, $\displaystyle\lim_{x\rightarrow a-0}f(x)$ と表します。たとえば $\tan x$ は右側から $\pi/2$ に近づくと $-\infty$ 、左側から $\pi/2$ に近づくと $\infty$ という極限値をとります。sympy.limit() の第 4 引数に '+' を渡すと右側極限を、'-' を渡すと左側極限を返します。

# PYTHON_SYMPY_LIMIT_03

import sympy

# 記号xを定義
sympy.var('x')

# 無限大の定義
oo = sympy.oo

# 円周率の定義
pi = sympy.pi

# f(x) = tan(x)
fx = sympy.tan(x)

# tanxの右側極限
lim_fx_right = sympy.limit(fx, x, pi/2, '+')

# tanxの左側極限
lim_fx_left = sympy.limit(fx, x, pi/2, '-')

print("右側極限 {}".format(lim_fx_right))
print("左側極限 {}".format(lim_fx_left))
右側極限 -oo
左側極限 oo