SymPyを使って高校数学でおなじみの三角関数の極限値を求めます。
$$
\begin{equation*}
\lim_{x \to 0} \frac{\sin x}{x} = 1
\end{equation*}
$$
関数のプロット
はじめに関数をプロットしてみます。複数のSymbol
を宣言する場合はsymbols
が便利です。
%matplotlib inline
from sympy import sin
from sympy import pi
from sympy import symbols
from sympy.plotting import plot
x, y1, y2, y3 = symbols('x y1 y2 y3')
y1 = x
y2 = sin(x)
y3 = y2/y1
plot(y1, y2, y3, (x, -pi/2, pi/2))
このままだとグラフと関数y1 y2 y3
の対応がわかりません。
y1 y2 y3
を個別にプロットして、一つのグラフにまとめる形にします。
p1 = plot(y1,(x, -pi/2, pi/2),line_color='#ff0000', legend=True)
p2 = plot(y2,(x, -pi/2, pi/2),line_color='#00ff00', legend=True)
p3 = plot(y3,(x, -pi/2, pi/2),line_color='#0000ff', legend=True)
p1.extend(p2)
p1.extend(p3)
p1.legend = True
p1.show()
原点付近でx
とsin(x)
の傾きが等しいように見えます。
極限値の計算
$\lim_{x \to 0} \frac{\sin x}{x}$の極限値を求めます。
sympy
からlimit
を読み込みます。
from sympy import limit
limit(sin(x)/x, x, 0)
$$1$$
当然ながら$\lim_{x \to 0} \frac{\sin x}{x}=1$となることがわかります。
引数が無限大における極限値$\lim_{x \to \infty} f(x)$を求める場合はsympy
からoo
を読み込む必要があります。
from sympy import oo
limit(sin(x)/x, x, oo)
$$0$$
$y = \sin x$が振動するのに対して$y = x$は単調増加するため極限値は0になります。