バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia5-backnumber/
はじめに
マクローリン展開のおおよその説明をしたところ。
今回は、sin関数のマクローリン展開をMATLABで演算しプロットするプログラムを作成
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
【再掲】sin関数のマクローリン展開
まずは、sin関数のマクローリン展開を再掲。
\(
\begin{eqnarray}
\displaystyle f(x)&=&f(0)+\frac{f^\prime(0)}{1!}x+\frac{f^\prime\prime(0)}{2!}x^2+\dots\\
\displaystyle &=&f(0)+\sum_{n=1}^\infty\frac{f^n(0)}{n!}x^n\\
\displaystyle \sin(x)&=&x-\frac{x^3}{3!}+\frac{x^5}{5!}-\frac{x^7}{7!}+\dots\\
\displaystyle &=& \sum_{n=0}^\infty\frac{(-1)^n x^{2n+1}}{(2n+1)!}
\end{eqnarray}
\)
今回はMATLABでsin関数のマクローリン展開で演算&プロットする。
【再掲】sin関数のマクローリン展開のプログラムフロー
そして、プログラムフローも再掲。
- プロット数、プロット範囲、x軸の定義
- nの次数列を定義
- 次数列に応じて以下を繰り返す
- sin関数のマクローリン級数を演算
- 演算結果をプロット
MATLABコード
MATLABコードは以下。
P=1000; % プロット数
L=2*pi; % -L~+Lの範囲
x=linspace(-L,L,P); % x軸
Ns = [0,1,2,3,4,5]; % n数セット
K=length(Ns);
for i = 1:K
N=Ns(i); % n数
Maclaurin_series = zeros(1,P);
% Σ(-1)^n x^(2n+1) / (2n+1)!
for n = 0:N
Maclaurin_series = Maclaurin_series + (-1)^n*(x.^(2*n+1))./factorial(2*n+1);
end
subplot(3,ceil(K/3),i );
hold off;
plot(x,sin(x),'LineWidth',3);
hold on;
plot(x,Maclaurin_series,'r','LineWidth',2);
title(sprintf('n=%d',N),'FontSize',24,'FontWeight','bold');
xlim([-L,L]);
ylim([-1.5,+1.5]);
grid();
end
処理結果
処理結果は以下。
nが増えていけばsin関数になるのが分かるね。
まとめ
まとめだよ。
- sin関数のマクローリン展開の演算とプロットをMATLABで実施。
- nが増えればsin関数に近似していく。
バックナンバーはこちら。
マンガでわかるフーリエ解析
手を動かしてまなぶ フーリエ解析・ラプラス変換
物理数学 量子力学のためのフーリエ解析・特殊関数
単位が取れるフーリエ解析ノート
今日から使えるフーリエ変換 普及版 式の意味を理解し、使いこなす
コメント