
信号処理素人老人がScilabの「信号処理のデモ」からカテゴリ脱出。前回は「常微分方程式」カテゴリでしたが、今回は「代数方程式」カテゴリです。順番が後なのに簡単になった?というのは誤解でした。DAE、微分代数方程式です。代数方程式を微分してシミュレーションしないといけないの?難しくなっているじゃん。
※「手習ひデジタル信号処理」投稿順 Indexはこちら
※Windows11上の Scilab2024.0.0を使用させていただいております。(Scilabについては御本家 Scilab 様へ)
DAE、Differential-Algebric Equations 微分代数方程式
さて今回「鑑賞」させていただくScilabデモの選択画面が以下に。
前回までの「常微分方程式」ODEの後に登場するのに、後の方が簡単なの?と思ったお惚け老人は馬鹿でした。代数方程式というのは言葉足らずなだけでした。
微分代数方程式 DAE
と書くべきでしょう。だいたい、デモのスクリプトは以下のパスに格納されとります。
Scilabのインストールパス\modules\differential_equations\demos\dae\dae1\pend3d1.dem.sce
differential_equationsの配下に入っておりますぞ。そして今回の「システム」を解くソルバ関数は以下です。
dassl()
DASSLとな。Scilabモグリ老人は使ったこともないソルバです。なんじゃら難しそう。しかし強い味方あり、最近頼り切っている感のあるGoogleの生成AI、Gemini 2.5 Flash様です。まずはDAEについてお教えいただきます。
ほほう、前回までのODEより何だメンドイ感じじゃん。さらに重要事項についてもお教えくだすってます。
でたなDASSL(Differential Algebric System Solver)、という感じ。まさにこれを使ってみるデモなのね。
球面振り子
さてシミュレーションのターゲットである球面振り子に戻ります。「ありがちな」単振り子の場合、よく見ると振動が「微小」とか「平面」の中に限定されていたりしていることに気づきます。それに比べると球面振り子は自由度が違うのさ、ということみたいっす。これまたGemini様にご解説いただきます。
この後、お約束のラグランジュ方程式など登場しますが、バッサリ割愛させていただきます。末尾に曰く。
DAEモデルへの言及いただきました。
上記凡例を見るとわかるように、3つのケースを並べてシミュレーションしているようです。index(でたな)の取り方にも複数あるうえに、stabilization(安定化?)を施したケースもあるみたい。物理素人老人が中身を見ていくのはツラソー。まあ、Gemini様のお陰で雰囲気分かったので、まあいいか(ほんとにそれで良いのか?)というところ。