ディープラーニングG検定の勉強中 その8(接線の方程式)

書籍「最短コースでわかるディープラーニングの数学」の内容に沿って勉強しています。

今回は、接線の方程式を求めますが、まずは直線の方程式から。


傾きがm、切片がbの直線の方程式は、以下の式となります。

式1
2-3-3-2.png

次に、点(p, q)を通る、傾きがm、切片がbの直線の方程式は、以下の式となります。
pはx座標の数値、qはy座標の数値なので、

2-3-3-3.png

このとき、bは以下のように置き換えることができます。

2-3-3-4.png

よって、求める方程式は以下となります。

式2
2-3-3-5.png


この式を元に、単なる直線ではなく、とある曲線の接点を通る接線の方程式にするには、
上記のp、q、mを以下のように置き換えて、

2-3-3-6.png

点(a, f(a))=接点 を通る方程式ができあがります。

式3
2-3-3-7.png


では、ここで、a=2のときの、接線の式を算出してみます。

関数のxに2を代入して、f(2) = 1
2-3-3-9.png

関数を微分して、xに2を代入して、f '(2) = 2
2-3-3-10.png

上記の値を接線の方程式に代入して、y = 2x - 3
2-3-3-11.png


それでは、関数と接線の方程式の直線をPythonを使ってグラフにしてみます。

--------------------
import matplotlib.pyplot as plt
import numpy as np

def main():
 x = np.arange(0, 3.1, 0.1)
 x2 = np.arange(0, 3.1, 0.1)

 y = np.arange(-2, 3, 0.1)
 y2 = np.arange(0, 3, 0.1)

 f = x**2 -2 * x + 1  #関数の曲線
 f2 = 2 * x2 - 3    #接線の直線

 y = f
 y2 = f2

 plt.plot(x, y)
 plt.plot(x2, y2)

 plt.grid(color='0.8')
 plt.show()

if __name__ == '__main__':
 main()

--------------------
出力結果

y = x^2 - 2x +1と、y = 2x - 3のグラフ
2-3-3-1.png

どうやら正解のようです。

ディープラーニングG検定の勉強中 その7(ディーワイディーエックス)

書籍「最短コースでわかるディープラーニングの数学」の内容に沿って勉強しています。

まずは、前回の微分の公式

公式1
2-3-1-7.png

に関数を当てはめて、接線の傾きを算出してみます。

関数1
2-3-1-9.png

公式1に関数1を当てはめて計算すると、

計算結果1
2-3-1-10.png

となります。

この計算結果には、以下の公式が当てはまります。

公式2
2-3-1-11.png

つまり、関数の指数の数をxの倍数にして、xの指数を1引くと、

計算結果2
2-3-1-12.png

計算結果1と同じ結果となります。

このことの証明はこちらのサイトで確認できます。

高校数学の美しい物語(べき関数(y=x^n)の微分公式の3通りの証明)


計算結果、f'(x)=2x - 2の「xを少しだけ増加したとき」をΔx、そのときの「f'(x)の増加量」をΔyとすると、

2-3-1-13.png

と表記できますが、これをさらに簡略化すると、以下の表記となります。

2-3-1-14.png

そして、この式の読み方は、「ディーワイディーエックス」となります。


この微分の公式での上記の関数1の計算をPythonのソースにすると、以下となります。

参考サイト
Qiita(微分や微分方程式をPythonで理解する)

--------------------
import sympy as sym
sym.init_printing(use_unicode=True)

a, b, c, x, y = sym.symbols("a b c x y")

# 関数
expr = x ** 2 - 2 * x + 1

# 関数を微分
#sym.Derivative(expr)

# 微分とその結果の出力 出力結果:2x - 2
#sym.Derivative(expr).doit()

# 微分の実施、微分の式とその計算結果の出力
sym.Eq(sym.Derivative(expr), sym.diff(expr))

--------------------
出力結果
2-3-1-15.png


微分の計算と出力が1行だけ! Pythonの数学モジュールはすごいですね~