問題設定

ロピタルの定理の有用性を実装して確かめる。

もとの式として $\frac{sin(x)}{x}$ を与え、これにロピタルの定理を適用し、 $lim_{x \to 0}$ での近似が出来ているかを確かめる。

実装

In [1]:
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import theano
import theano.tensor as T
In [7]:
x = T.dscalar('x')
In [8]:
y1 = T.sin(x)
y2 = x
In [9]:
d_y1 = T.grad(cost=y1, wrt=x)
d_y2 = T.grad(cost=y2, wrt=x)
In [10]:
f = theano.function(inputs=[x], outputs=y1/y2)
f_d = theano.function(inputs=[x], outputs=d_y1/d_y2)
In [11]:
input = np.linspace(-5, 5, 1000)
In [15]:
try:
    output = [f(input[i]) for i in range(len(input))]
except:
    print("Error is caught. Use L'Hospital's Rule...")
    output = [f_d(input[i]) for i in range(len(input))]
    
output2 = [f_d(input[i]) for i in range(len(input))]
In [16]:
plt.plot(input, output)
plt.plot(input, output2)
plt.show()

吟味

Theanoでは、不定形の極限の問題となったとき、自動的にロピタルの定理を適用してそうだ。
x = 0付近では、ロピタルの定理によって近似した関数f_dと元の関数fが一致してそう。

ロピタルの定理とは、あるx付近において、関数f(x)/g(x)が不定形であったときに、
f'(x)/g'(x)で近似できるという定理であるということがよくわかった。

In [ ]: