Pythonで実装する微分②(三角関数)|Pythonで実装する高校数学 #4

f:id:lib-arts:20190801193616p:plain

連載の経緯と多項式関数と三角関数の概要とPython実装は#1で、指数関数、対数関数の概要とPython実装は#2でまとめました。

#3以降では微分について取り扱います。#3では多項式関数の微分について取り扱いました。

#4では三角関数微分となります。
以下目次になります。
1. 三角関数微分の公式と導出
2. Pythonで実装する三角関数微分
3. まとめ


1. 三角関数微分の公式
#3でも触れましたが、微分の定義式は下記の式で表すことができます。
\lim_{h \to 0} \frac{f(x+h)-f(x)}{h}
#3ではこの式を多項式関数にあてはめて考えました。
f'(x) = \lim_{h \to 0} {\Large \frac{(x+h)^2 - x^2} {h}} = \lim_{h \to 0} {\Large \frac{2xh + h^2} {h}} = \lim_{h \to 0}(2x+h) = 2x
上記はf(x)=x^2微分の導出になっています。多項式関数に関しては(x+h)^nを二項定理で展開し計算していくことで、(x^n)'=nx^{n-1}を導出することができます。これを多項式微分における公式として把握することができます。
今回は三角関数微分微分について確認します。公式は下記のようになっています。
(cos{x})' = \frac{cos(x+h) - cos{x}}{h} = -sin{x}
(sin{x})' = \frac{sin(x+h) - sin{x}}{h} = cos{x}
このように三角関数微分については公式があります。公式の導出については若干トリッキーなので省略しますが、定義に基づいて導出するとcos{x}微分については-sin{x}sin{x}微分についてはcos{x}となっていることに注意です。
2節ではPythonでの実装を通して三角関数微分について確認してみます。

 

2. Pythonで実装する三角関数微分
2節ではPython三角関数微分について確認していきます。まずはcosについて確認していきます。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0,10,0.01)
y = np.cos(x)

plt.plot(x,y)
plt.show() 

cosのグラフは上記のようにすることで描くことができます。実行結果は下記のようになります。

f:id:lib-arts:20190808175924p:plain

上記において、cosがx=0で値1を取り、周期が2\piであることが確認できます。
次に下記のようなコードを実行することで接線(tangent line)を引くことができます。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0,10,0.01)
y = np.cos(x)
plt.plot(x,y,label="cos(x)")
x_ = np.arange(0,4,0.01)

x_pos = [2., 3.14]
for xpos in x_pos:
    f = np.cos(xpos)
    f_add_h = np.cos(xpos+0.01)
    slope = (f_add_h - f)/0.01
    tangent_line = slope*(x_-xpos)+np.cos(xpos)
    plt.plot(x_,tangent_line,label="tangent_line_"+str(xpos))

plt.legend()
plt.show()

実行結果は下記のようになります。

f:id:lib-arts:20190808181513p:plain

 

cosについて確認できたので次にsinについて確認していきます。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0,10,0.01)
y = np.sin(x)

plt.plot(x,y)
plt.show()

sinのグラフは上記のようにすることで描くことができます。実行結果は下記のようになります。

f:id:lib-arts:20190808181614p:plain

sinがx=0で値0を取り、周期が2\piであることが確認できます。
また、cosの時と同様に下記のようなコードを実行することで接線(tangent line)を引くことができます。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0,10,0.01)
y = np.sin(x)
plt.plot(x,y,label="sin(x)")
x_ = np.arange(0,4,0.01)

x_pos = [1.57, 2., 3.14]
for xpos in x_pos:
    f = np.sin(xpos)
    f_add_h = np.sin(xpos+0.01)
    slope = (f_add_h - f)/0.01
    tangent_line = slope*(x_-xpos)+np.sin(xpos)
    plt.plot(x_,tangent_line,label="tangent_line_"+str(xpos))

plt.legend()
plt.show()

実行結果は下記のようになります。

f:id:lib-arts:20190808181702p:plain
ここまでの内容で大体のイメージがつかめたと思いますので2節はここまでとします。


3. まとめ
#4では三角関数微分について取り扱いました。
#5では指数関数と対数関数の二つについて取り扱えればと思います。