【入門】MATLAB,Python,Scilab,Julia使い方比較【数値計算プログラム】

【入門】MATLAB,Python,Scilab,Julia使い方比較【数値計算】 MATLAB/Simulink
【入門】MATLAB,Python,Scilab,Julia使い方比較【数値計算】

フーリエ解析学(導入編)

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

フーリエ級数

  • フーリエ解析学は「フーリエ級数、係数」と「フーリエ変換、逆フーリエ変換」に分けられる。
  • 「フーリエ級数、係数」も実数フーリエと複素フーリエに分けらえる。
  • 無限級数について説明。
  • 波の合成について説明。
    • 単なる関数の足し算になる。
  • フーリエ級数について説明。
  • sin関数だけでなく、cos関数も使用する。
  • a0/2はバイアスを想定した係数。
  • プログラム化は、フーリエ係数の話の後に、フーリエ級数含めてプログラム化予定。

偶関数と奇関数

  • フーリエ係数の話に突入。
  • フーリエ係数へ至る道を説明。
  • 偶関数について説明。
  • 単純にy軸に対して線対称な関数。
  • 奇関数について説明。
  • 単純に原点に対して展対称な関数。
  • 偶関数と奇関数の積の重要な特性について説明。
    • 結論としては以下になるだけ。
      • 偶関数×偶関数=偶関数
      • 奇関数×偶関数=奇関数
      • 奇関数×奇関数=偶関数

複雑な定積分

  • 偶関数、奇関数を駆使する数学パズルを実施。
  • 細かいことは置いておいて、雰囲気のみでざっくり解説。
  • 奇関数が確定すれば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にするだけ。

重要な極限値

  • 重要な極限値について説明。
  • まずは円に接する三角形と扇形に着目する。
  • はさみうちの原理により1が求められる。
  • sinc関数について説明&MATLABでプロットしてみた。(Pythonコードも)

三角関数の直交性

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

MATLAB

  • 三角関数の直交性をMATLABで確認してみた。
  • 同一の関数及び角周波数の場合はπになり、それ以外は0になる。

Python

  • 三角関数の直交性をPythonのNumPyで確認してみた。
  • 同一の関数及び角周波数の場合はπになり、それ以外は0になる。

Scilab

  • 三角関数の直交性をScilabで確認してみた。
  • 同一の関数及び角周波数の場合はπになり、それ以外は0になる。

Julia

  • 三角関数の直交性をJuliaで確認してみた。
  • 同一の関数及び角周波数の場合はπになり、それ以外は0になる。

フーリエ係数

  • 前回までに求めた三角関数の直交性を示す公式を再確認。
  • ベクトルの内積によるベクトル成分抽出のイメージを説明。
  • 三角関数の直交性を利用した三角関数成分の抽出について説明。
  • イメージしずらい概念だが、関数の成分を抽出できるという事実に着目すると良い。
  • フーリエ係数anを求める式の一般化。
  • 流れとしては前回のa1を求める式と同じ。
  • フーリエ係数を求める雰囲気を感じ取るため、係数a1のみに着目。
  • 三角関数の直交性を利用すると、フーリエ級数の各項のほとんどが0となる。
  • それを使用して係数a1を求める式を導出できる。
  • フーリエ係数を求める一般化された式のまとめ。
  • a0が1/2されている理由を説明。
  • フーリエ係数のbnを求める式の一般化。
  • ついでにa0を求める式も一般化。
  • 常に1のような定数関数は畳み込み積分に於いては矩形波をイメージすると認識しやすい。
  • フーリエ係数を求めるプログラムを作成予定。
  • フーリエ係数で係数を求め、その係数を利用してフーリエ級数で波形を再現する方式。
  • nを大きくすることで、波形がどう変化するかがポイント。

MATLAB

  • フーリエ係数を求めるプログラムをMATLABで実現。
  • おおよそ元の波形を再現できる係数が算出できている。
  • 不連続点では流石に振動している。

Python

  • フーリエ係数を求めるプログラムをPythonで実現。
  • おおよそ元の波形を再現できる係数が算出できている。
  • 不連続点では流石に振動している。

Scilab

  • フーリエ係数を求めるプログラムをScilabで実現。
  • おおよそ元の波形を再現できる係数が算出できている。
  • 不連続点では流石に振動している。

Julia

  • フーリエ係数を求めるプログラムをJuliaで実現。
  • おおよそ元の波形を再現できる係数が算出できている。
  • 不連続点では流石に振動している。

フーリエ級数(周期2L)

  • 前回までのフーリエ級数、フーリエ係数には周期2πという制約がある。
    • 三角関数の直交性を得るための制約。
  • フーリエ級数を伸縮するための検討。
    • xがπと認識するように係数を掛けてあげればOK。
  • フーリエ係数も、πがLになるように式を変更すればOK。
  • 任意周期のフーリエ級数、フーリエ係数のプログラム化検討。
  • 基本的には以前の使い回し。
    • 波形データの解釈や、数式が変わるのみ。の予定。

MATLAB

  • フーリエ級数、フーリエ係数の任意周期版のプログラムをMATLABで作成。
  • -π~πだけでなく、-10~10のような任意の周期に適応可能。

Python

  • フーリエ級数、フーリエ係数の任意周期版のプログラムをPythonで作成。
  • -π~πだけでなく、-10~10のような任意の周期に適応可能。

Scilab

  • フーリエ級数、フーリエ係数の任意周期版のプログラムをScilabで作成。
  • -π~πだけでなく、-10~10のような任意の周期に適応可能。

Julia

  • フーリエ級数、フーリエ係数の任意周期版のプログラムをJuliaで作成。
  • -π~πだけでなく、-10~10のような任意の周期に適応可能。

マクローリン展開

  • いままでやってきたのは実数フーリエ。
  • 複素フーリエに至る道を記載。
  • テイラー級数について説明。
  • テイラー級数とマクローリン級数を比較。
  • マクローリン展開について説明。
  • 指数関数をマクローリン展開してみた。
  • さらにマクローリン展開したものをグラフ化。
    • nが増えれば近似度合いも上がる。
  • cos関数をマクローリン展開。
    • cos関数をマクローリン展開したプロットも出してみた。
  • sin関数をマクローリン展開。
    • sin関数をマクローリン展開したプロットも出してみた。
  • sinのマクローリン級数をプログラムで記載してみる予定。
  • プログラムフローを提示。
    • 基本はfor文でぶん回すだけ。

MATLAB

  • sin関数のマクローリン展開の演算とプロットをMATLABで実施。
  • nが増えればsin関数に近似していく。

Python

  • sin関数のマクローリン展開の演算とプロットをPythonで実施。
  • nが増えればsin関数に近似していく。

Scilab

  • sin関数のマクローリン展開の演算とプロットをScilabで実施。
  • nが増えればsin関数に近似していく。

Julia

  • sin関数のマクローリン展開の演算とプロットをJuliaで実施。
  • nが増えればsin関数に近似していく。

オイラー能公式

  • オイラーの公式の話に突入。
  • 各種マクローリン展開を再掲。
  • 指数関数のマクローリン展開に複素数を入れてみる。
  • 複素指数関数のマクローリン展開を変形。
  • オイラーの公式の変形。

まとめ

MATLAB,Python,Scilab,Juliaどれもとても優秀な電卓であり、シミュレータであり、データビューアとなる。

Pythonをガッツリ学習したい場合はオンライン学習サービスなどもあります。

オンラインPython学習サービス「PyQ(パイキュー)」公式ページ

ポイント

  • 環境構築不要
    • ブラウザだけで学習を始められる。
  • 申し込みから4ステップで登録を完了
    • 申し込み完了待ちとかない。すぐ始められる。
  • 1,000問以上の実践的な課題がある。

Pythonで動かして学ぶ!あたらしい線形代数の教科書

Amazon.co.jp

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

Amazon.co.jp

ゼロからはじめるPID制御

https://amzn.to/3SvzuyR

OpenCVによる画像処理入門

https://amzn.to/498ZUgK

恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]

Amazon.co.jp

Pythonによる制御工学入門

Amazon.co.jp

理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析

https://amzn.to/3UAunQK


https://www.simulationroom999.com/blog/comparison-of-matlab-python-scilab/

コメント

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