1.描いたグラフ
グラフだけ見たいという人向けにこちらをどうぞ。-5 <= x <= 5の範囲でやってみました。当然といえば当然だけれども,一度は自分で描いてみるとすうがくのちからってすげーってなる。近似する次数が大きくなれば大きくなるほど目的の関数に近づいてくるのは不思議な感覚。
2.プログラムの予備知識
とりあえず数式はこいつら。ちゃんとした奴はWikipediaさんとか見てください。まぁこれをPythonで書くとこんな感じ。sin関数の近似のところはコメント多めにしといた。そこのコメントを見ればnumpyの関数の意味もある程度わかると思う。
# -*- coding: utf-8 -*- import matplotlib.pyplot as plt import numpy as np pi = np.pi # サイン # -5から5までの数字を100個の数字でプロットする x = np.linspace(-5,5,num=100) plt.plot(x,np.sin(x),label="sin(x)") # 1次の項 y = x plt.plot(x,y,label="n=1") # 3次の項 y = y - x**3 / 6 plt.plot(x,y,label="n=3") # 5次の項 y = y + x**5 / 120 plt.plot(x,y,label="n=5") # 7次の項 y = y - x**7 / 5040 plt.plot(x,y,label="n=7") # スケールを指定 plt.xlim(-5,5) plt.ylim(-5,5) # タイトルを指定 plt.title("sine approximation formula") # x=0,y=0の線を書く plt.axhline(0, color='black') plt.axvline(0, color='black') # ラベルを指定 plt.xlabel("x") plt.ylabel("y") # 判例を表示 plt.legend() plt.show() # コサイン x = np.linspace(-5,5,num=100) plt.plot(x,np.cos(x),label="cos(x)") y = x**0 plt.plot(x,y,label="n=0") y = y - x**2/2 plt.plot(x,y,label="n=2") y = y + x**4/24 plt.plot(x,y,label="n=4") y = y - x**6/720 plt.plot(x,y,label="n=6") plt.xlim(-5,5) plt.ylim(-5,5) plt.title("cosine approximation formula") plt.axhline(0, color='black') plt.axvline(0, color='black') plt.xlabel("x") plt.ylabel("y") plt.legend() plt.show() # タンジェント x = np.linspace(-5,5,num=100) plt.plot(x,np.tan(x),label="tan(x)") y = x plt.plot(x,y,label="n=0") y = y + x**3 / 3 plt.plot(x,y,label="n=3") y = y + x**5 * 2.0/15 plt.plot(x,y,label="n=5") y = y + x**7 * 17.0/315 plt.plot(x,y,label="n=7") plt.xlim(-5,5) plt.ylim(-5,5) plt.title("tangent approximation formula") plt.axhline(0, color='black') plt.axvline(0, color='black') plt.xlabel("x") plt.ylabel("y") plt.legend() plt.show()matplotlibありがたし。
3.おまけ
記事のタイトルをマクローリン展開とすべきかテイラー展開とすべきかGoogleトレンドで調べてみた。7月は期末テストかな。大学生も大変だー。
0 件のコメント:
コメントを投稿