MATLAB,Python,Scilab,Julia比較 第5章【バックナンバー】

MATLAB,Python,Scilab,Julia比較 第5章【バックナンバー】 数値計算
MATLAB,Python,Scilab,Julia比較 第5章【バックナンバー】

はじめに

MATLAB,Python,Scilab,Julia比較するシリーズの第4章。

第4章では分類問題で最終的にはニューラルネットワークや最適化アルゴリズムの話だった。

第5章はフーリエ解析学から高速フーリエの話がメインとなる。
基本的には以下の流れとなる。

  • フーリエ解析学
    • 実数フーリエ級数
    • 実数フーリエ係数
    • 複素フーリエ級数
    • 複素フーリエ係数
    • フーリエ変換
    • 逆フーリエ変換
  • 離散フーリエ
    • 離散フーリエ変換
    • 逆離散フーリエ変換
    • 高速フーリエ変換
    • 逆高速フーリエ変換

細かいところとしては、オイラーの公式、三角関数の直交性、バラフライ演算などの話も出てくる。

ちなみに、問答方式じゃない方も記事もある。
問答方式に合わせて内容を強化していく予定。

書籍とか

マンガでわかるフーリエ解析

https://amzn.to/4azyPDj

手を動かしてまなぶ フーリエ解析・ラプラス変換

https://amzn.to/4bDH3vu

物理数学 量子力学のためのフーリエ解析・特殊関数

https://amzn.to/4bsygfU

単位が取れるフーリエ解析ノート

https://amzn.to/3V83fIl

今日から使えるフーリエ変換 普及版 式の意味を理解し、使いこなす

https://amzn.to/3ysbfvf

その他の章

導入編

  • 業務でフーリエ解析学に絡むところがやってるのでこれを第5章はフーリエ解析学をテーマとする
  • 途中、フーリエと関係ない部分でもプログラム化して確認するなどをして理解しやすい状態で進める予定。

フーリエ級数

  • フーリエ解析学は「フーリエ級数、係数」と「フーリエ変換、逆フーリエ変換」に分けられる。
  • 「フーリエ級数、係数」も実数フーリエと複素フーリエに分けらえる。
  • まずはフーリエ級数に至る道を提示。
  • 無限級数について説明。
    • 無限級数自体は無限に足していくだけの概念。
  • 無限級数の代表格にテイラー級数がある。
  • 波の合成について説明。
  • 単なる関数の足し算になる。
  • フーリエ級数に話を繋げるならば、三角関数の足し算と思えばOK。
  • フーリエ級数について説明。
  • sin関数だけでなく、cos関数も使用する。
  • a0/2はバイアスを想定した係数。
    • 2分の1は係数算出時にキレイになるため。
      • 理由は後日。
  • フーリエ級数までの説明は完了。
  • いつもなら、ここでプログラム化の話になるの段が、フーリエ級数だけでは波の合成以上の話ができない。
  • よって、フーリエ係数の話の後に、フーリエ級数含めてプログラム化予定。

偶関数と奇関数

  • フーリエ係数の話に突入。
  • フーリエ係数へ至る道を説明。
    • 大半が「三角関数の直交性」に必要な知識。
  • 偶関数、奇関数を利用した数学パズルっぽいのもやる予定。
  • 偶関数について説明。
  • 単純にy軸に対して線対称な関数。
    • この特性から-L~Lの範囲の定積分は、0~Lの範囲の定積分の2倍となる。
  • 奇関数について説明。
  • 単純に原点に対して展対称な関数。
    • この特性から-L~Lの範囲の定積分は、必ず0になる。
  • 偶関数と奇関数の積の重要な特性について説明。
    • 結論としては以下になるだけ。
      • 偶関数×偶関数=偶関数
      • 奇関数×偶関数=奇関数
      • 奇関数×奇関数=偶関数

複雑な定積分

  • 偶関数、奇関数を駆使する数学パズルを実施。
  • 細かいことは置いておいて、雰囲気のみでざっくり解説。
  • 奇関数が確定すれば0にできる。
  • 偶関数が確定すれば線対称を利用して積分範囲を半分にした上で2倍にすればOK。
  • 前回の数学パズルを真面目に解いてみる。
  • まずは平方根の関数の正体を探る。
    • 結果としては半円の方程式と言うことになる。
  • これで構成される関数が偶関数か奇関数か特定できたことになる。
  • 偶関数、奇関数の特性を利用しまくって定積分を最適化しまくる。
  • ほとんどが0に消えて、半円の方程式だけが残る。
  • さらに偶関数の特性を利用して四分円にする。
  • 半径2の円を四等分すれば答えが出る。
  • 複雑な関数も無限次元ベクトルと見なすと力業で解くことが可能。
  • 複雑な定積分を無限次元ベクトルとして表現。
  • これをプログラムとして解いていく。

MATLAB

  • 複雑な定積分をMATLABで求めた。
  • 同様に円周率が答えとして算出。
    • 小数点第6位まで一緒。
    • Nを増やせばもっと精度は上がる。

Python

  • 複雑な定積分をPythonで求めた。
  • 同様に円周率が答えとして算出。
    • 小数点第6位まで一緒。
    • Nを増やせばもっと精度は上がる。

Scilab

  • 複雑な定積分をScilabで求めた。
  • 同様に円周率が答えとして算出。
    • 小数点第6位まで一緒。
    • Nを増やせばもっと精度は上がる。

Julia

  • 複雑な定積分をJuliaで求めた。
  • 同様に円周率が答えとして算出。
    • 小数点第6位まで一緒。
    • Nを増やせばもっと精度は上がる。

関数の内積

  • 前回までの数式パズルの力業的解法と関数の内積はほぼ同一の考え方。
  • 関数を無限次元ベクトルを解釈すると、関数の内積は関数の積の定積分として表現される。

三角関数加法定理

  • 三角関数の加法定理を確認。
  • 偶関数、奇関数を利用すると、βにマイナス符号が付いた加法定理の式も導出できる。

三角関数積和公式

  • 三角関数の加法定理の組み合わせで積和公式が導出できる。
  • sin,cosの積和公式とcos,cosの積和公式を導出してみた。
  • sin,sinの積和公式を導出。
  • 積和公式をフーリエ係数に向けて変形。
    • α,βをαx,βxにするだけ。

重要な極限値

  • 重要な極限値について説明。
    • sin(x)/xのxを0に近づける極限値。
  • まずは円に接する三角形と扇形に着目する。
    • これが先ほどの極限値にどうつながるかは次回。
  • 円に接する三角形と扇形の面積の不等式を最適化。
  • いろいろ弄っていくと、はさみうちの原理により1が求められる。
  • はさみうちの原理について説明。
  • sinc関数について説明&MATLABでプロットしてみた。(Pythonコードも)

三角関数の直交性

  • 直交性とは2つのベクトルが垂直に交わることを指す。
  • 直交しているベクトルの内積は必ず0になる。
    • cos関数の影響。
    • 成分表記の内積でも0になることを確認。
  • sinとcosの内積と畳み込み積分を考える。
  • 奇関数、偶関数の特性より、sin、cosの畳み込み積分は0となる。
  • 畳み込み積分が0ということは内積も0になる。
  • 内積が0ということは直交しているということになる。
  • sin関数同士の直交性を確認。
  • sin同士の積和公式の定積分を元に解いていく。
  • 最終的にはsinが0になるので、内積の結果も0となる。
  • 結果としてsin関数同士は直交していることになる。
  • m=nの時のsin関数の内積を求める。
  • 分母が0になるため、極限値を利用する。
  • 結果としてはπになる。
  • つまり、同じ角周波数のsin同士の内積は必ずπになる。
  • cos関数同士の直交性を確認。
  • cos同士の積和公式の定積分を元に解いていく。
  • 最終的にはsinが0になるので、内積の結果も0となる。
  • 結果としてcos関数同士は直交していることになる。
  • m=nの時のcos関数の内積を求める。
  • 分母が0になるため、極限値を利用する。
  • 結果としてはπになる。
  • つまり、同じ角周波数のcos同士の内積は必ずπになる。
  • 三角関数の直交性のまとめ。
    • 各種式を確認。
  • 直交性具合をアニメーションで確認。
  • 三角関数の畳み込みをプログラムでやっている予定。

コメント

タイトルとURLをコピーしました