バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia5-backnumber/
はじめに
フーリエ係数に至る道。
今回は偶関数と奇関数を利用した数学パズルを力業で解く方法をJuliaで実現する。
登場人物
博識フクロウのフクさん
イラスト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
【再掲】フーリエ係数に至る道
まずは、フーリエ係数に至る道を再掲。
- 偶関数
- 奇関数
- 関数の内積
- 三角関数の加法定理
- 三角関数の積和公式
- 重要な極限値
- 三角関数の直交性
- フーリエ係数
今回は偶関数と奇関数を利用した数学パズルを力業で解く方法をJuliaで実現する。
【再掲】力業で解きたい数式
力業で解きたい数式は以下。
\(
\begin{eqnarray}
&&\displaystyle\int_{-2}^2\Big(x^3\cos(2x)+\frac{1}{2}\Big)\sqrt{4-x^2}dx\\
&=&\displaystyle\int_{-2}^2\Big(x^3\cos(2x)\sqrt{4-x^2}+\frac{1}{2}\sqrt{4-x^2}\Big)dx
\end{eqnarray}
\)
無限次元ベクトルであることを前提として、
今回の定積分を表現すると以下になる。
\(
\begin{eqnarray}
\Bigg(
\begin{bmatrix}
-2^3&\dots&2^3
\end{bmatrix}\odot
\begin{bmatrix}
\cos(2(-2))&\dots&\cos(2(2))
\end{bmatrix}
\begin{bmatrix}
\sqrt{4-(-2)}\\
\vdots\\
\sqrt{4-(2)}\\
\end{bmatrix}\\+
\displaystyle\frac{1}{2}
\begin{bmatrix}
\sqrt{4-(-2)}&\dots&\sqrt{4-(2)}
\end{bmatrix}
\begin{bmatrix}
1\\
\vdots\\
1
\end{bmatrix}
\Bigg)\Delta x
\end{eqnarray}
\)
Juliaコード
Juliaコードは以下。
using Printf
N=10000000; # 次元数
L=2-(-2); # 定積分範囲
dt=L/N # Δx
x=range(-2,2,length=N)'; # x軸作成(行ベクトルにするために転置)
y=(x.^3 .*cos.(x)*sqrt.((x.^2).+4)' + sqrt.(-x.^2 .+4)*ones(N,1)/2)*dt;
@printf("%.15f\n",y[1])
処理結果
処理結果は以下。
3.141592339325366
円周率は
3.141592653589793…
だから、これも小数点第6位まではあってる。
Nの数値を大きくすれば、もっと精度は上がると言う理屈だ。
まとめ
まとめだよ。
- 複雑な定積分をJuliaで求めた。
- 同様に円周率が答えとして算出。
- 小数点第6位まで一緒。
- Nを増やせばもっと精度は上がる。
バックナンバーはこちら。
マンガでわかるフーリエ解析
手を動かしてまなぶ フーリエ解析・ラプラス変換
物理数学 量子力学のためのフーリエ解析・特殊関数
単位が取れるフーリエ解析ノート
今日から使えるフーリエ変換 普及版 式の意味を理解し、使いこなす
コメント