
溝口純敏様著「Maxima を使った物理数学基礎演習ノート」(PDFファイル、以下「演習ノート」と略)を拝読中であります。今回読むのは25ページ目。「3.1.2 ode2 関数」です。微分方程式を「数式のまま」解く関数は前回のdesolveと今回のode2と2種類ありますが、ode2は先に一般解をもとめるもの。
※ MaximaおよびそのGUIであるwxMaximaの以下バージョンを使用させていただいております。
-
- wxMaxima 22.04.0
- Maxima 5.46.0(x86_64-w64-mingw32)
- SBCL 2.2.2 (SBCL = Steel Bank Common Lisp )
※ Maxima を使った物理数学基礎演習ノート は以下のバージョンをダウンロードさせていただきました。
令和4 年3 月 第八回改訂
ode2関数
ode2は一階、2階の常微分方程式を解くための関数です。以下の過去回を筆頭に、なんども練習済です。
忘却の微分方程式(128) 反復練習91、ODE2で微分方程式の一般解、Maxima
忘却の微分方程式(129) 反復練習92、ODE2で微分方程式の初期値問題、Maxima
ありがちな「なんたら形」とか「ほにゃらら法」など、大学初年級くらいで練習するであろう常微分方程式の数々を皆解いてしまうことが出来てます。どうもアリガチなところの解法を網羅している関数らしいです。
前回のdesolveが初期条件などを atvalue で与えておいてから、特殊解を求めるステップになるのに比べ、今回のode2は、先にode2で一般解を求めておいてから、ic1、ic2もしくはbc2という初期値、境界値を与える御供の関数どもを使って特殊解を得るスタイルです。
今回「演習ノート」の例題で改めて確認させていただいたのは、
-
- ode2の場合、変数の依存関係は depends関数で与えた方が良い
- desolveの場合、y(x) のように 従属変数(独立変数) をその場で明示する書式の方が良い
という点です。
変数の依存関係
上記の dependsの効果を見るために「演習ノート」の1階常微分方程式の例題をそのまま引き写させていただいたものが以下に。左がy(x) 式の依存関係をその場で明示するもの。右がdepends関数で変数の依存関係をあらかじめ宣言しておくもの。
上記のように、左は ic1 で x=0のときy(x)=1なのよ、と条件与えているのに、なぜだか消化不良。一方、右のdependsで依存関係宣言したものは、結果スッキリであります。
なお、Maxima様内部で依存関係(微分の)は、dependenciesという大域変数が保持するリストで管理されているみたいです。depends関数はこれに依存関係を加えると。一方、リストから依存関係を取り除くのは remove関数デス。こんな感じ。
dependsとremove、心して使えよ、自分。