
数学ガール感想_テイラー展開の描画
結城浩先生の「数学ガール」読んで、sinxのテイラー展開を実際に描画したくなった。そんなわけでpythonに描かせてみた。
f(x)=x まあ当然こうなるよな
f(x) =x -(x^3)/(3!)
おお、こんなに近づくのか!
f(x) =x -(x^3)/(3!) + (x^5)/(5!)
-π/2~π/2はほとんど、sin(x)じゃないか!
f(x) =x -(x^3)/(3!) + (x^5)/(5!) -(x^7)/(7!)
-π~πの範囲でほぼsin(x)
感想
テトラちゃんが「sin(x)は一つの形に過ぎない、いろんな形をとれる」って言ったがそれを納得させられる結果だったな。
すごい!面白い!
なるほど、数学にプログラムが必要な理由が体感として理解できたぜ。
ミルカさんが主人公に「君はグラフを描かないのが弱点」と言われていたが、私も同じ弱点を抱えていたな。
pythonのコード
pythonのコードは以下の通りです。興味のある方は試してみて下さい。
import numpy as np
import matplotlib.pyplot as plt
import math
c=1
#最大値と最小値にかける係数を設定。この値は適当
min = -c*np.pi
#最大値を-cπに設定
max = c*np.pi
#最小値をcπに設定
x= np.linspace(min,max,2000)
#np.linspace…連続する値を順に入れた配列を生成する関数。1st…最小値、2nd…最大値、3rd…分割数
f_sin = np.sin(x)
#関数sin(x)
a3= -1/math.factorial(3)
a5= 1/math.factorial(5)
a7= -1/math.factorial(7)
#factorialは引数の階乗を出す関数
#a3、a5…はxの累乗の係数
f_Taylor_Expansion = x+a3* (x**3)+ a5*(x**5)+a7* (x**7)
#sin(x)のテイラー展開(x^7まで)
#累乗するときは^でなく**を使おう!
plt.plot(x,f_sin,color="r",label="sin(x)")
#plot関数…第一引数をx、第二引数をyとしてxy空間に散布図グラフを作る関数。
#color=""…グラフの色指定,label=""…グラフのラベル名、このあとにplt.legend()が必要
plt.plot(x,f_Taylor_Expansion,color="black",label="Taylor_Expansion")
plt.legend()
#グラフに凡例を作る関数…なお、凡例は各グラフで定義する必要がある。
plt.show()
#グラフと凡例を描画する関数
参考文献
結城浩『数学ガール』 [ 数学ガールシリーズ 1)] SBクリエイティブ,2007
https://www.amazon.co.jp/dp/4797341378/ref=cm_sw_r_tw_dp_4D4HMJN5D94JGHQTK5ZS