数式処理ソフト DERIVE(デライブ) de ドライブ

33.演算子法

1.常微分方程式の解

「数式処理ソフト DERIVE(デライブ)の前回は、DERIVEでの1階常微分方程式の解法について、説明したのじゃが、ともちゃんは、いなかったの」

「えへへ。ディズニーランドに行っていたのよ。
ところで、特殊解と特異解って、どこが違うの?」

「そうじゃの。
わしには、一般的に説明する自信はないのじゃが、この本(「常微分方程式の解法」(木村俊房 著:培風館)では、だいたい、こんな風に説明しているの。
まず、常微分方程式の「解」とは、これは、普通の方程式と同じじゃが、その微分方程式に解の候補を代入して、恒等式になれば、それは、一つの解が求まったということじゃな。
一般に、n階常微分方程式の解には、n個の未定定数を含む解がある。この解を「一般解」という。
そして、一般解の内、何らかの与えられた条件、たとえば、初期値を満足する解を「特殊解」という。特殊解は、「特解」ともいわれることがある。
「特異解」というのは、一般解に含まれない「解」じゃ」

「へー。特異解って、いつもあるのかしら」

「特異解は、文字通り、特異じゃからの、いつもあるとは限らないのじゃな」

「そうすると、ここまでをまとめると、1階常微分方程式をDERIVEで解くためには、数学的に数式を扱っていくか、または、DERIVEのユーティリティを使うか、の2つの方法があるわけね」

「もう、2つは、あるの。
ひとつは、「演算子法」じゃな。
単体のn階常微分方程式や連立の常微分方程式を「代数計算」に帰着させて解く有力な方法じゃ。
DERIVEは、代数計算は得意じゃからな」

「もう一つは?」

「これまで、挙げた解法は、いずれも方程式の「厳密解」を求める方法じゃ。
厳密解といっても、実は、前述の本でもそうなのだが、「解」は、初等関数をはじめとした既知の関数を組み合わせたもの以外に、それらの積分や積分の逆関数などの関係式が得られれば、それも「解」といっている。
しかし、それらの関係式から数値を知るためには、どうしても、数値計算に頼る必要がある。
そう、最後の有力な方法は、「数値計算」じゃな。これは、大きなテーマじゃから、別途、項を改めて説明しよう」

2.演算子法

「「演算子法」について、この場で、一般的に説明することはできないんじゃが、ここにある「演算子法(近藤次郎 著:培風館)」は、わしの学生時代の本じゃよ。
この本では、主として、ラプラス変換に基づく演算子法を説明している。
DERIVEでは、LAPLACE(y,x,s)で計算できる。こうして得られた関数をラプラス変換といって、Y(s)、また、変数をsで表す。
逆変換は、ブロムイッチ(Bromwich)積分という複素積分になる。
しかし、ユーティリティファイルには、含まれていないのが残念じゃが、ユーザ定義ファイルとして、読み込むことはできる。
Laplace Transform.dfwというファイルを読み込むことで、INVLaplace(Y(s),s,t)と書けば、逆変換が可能となる。
あるいは、前記の本の末尾に変換と逆変換の対関数表が掲載されているので、表引きを行うこともできる」

「バネの運動について、応用すると、どのようにするのかしら?」

「それを説明する前に最低限の規則を出しておこう。次の表は、元の方程式をラプラス変換する際に必要な事項を整理したものじゃ。
なお、以下では、求めたい関数をf(t)、そのラプラス変換をF(s)で表す。「演算子法(近藤次郎 著:培風館)」から抜粋。」

操作 f(t) F(s) 備考
変換 ∫f(t)e-stdt F(s) 積分範囲はt=0~+∞
n階微分 f(n)(t) snF(s)-sn-1f0-・・ f0・・は初期値を表す
n階積分 ∫・・∫f(t)dt s-nF  
伸縮 f(at) F(s/a)/a a>0
たたみ込み f1*f2 F1F2  
移動 f(±a) Fe±as  
e±λt e±λtf(t) F(s±λ) λの実数部は正
tn tnf(t) (-1)nF(s)  
t-n t-nf(t) F(s)のn重積分 積分範囲は0~∞

3.バネの運動

「バネに結びつけられた質量mの質点の運動を調べるための運動方程式は、mx''=-kxだったな」

「初期条件は、t=0でx=0、x'=vということだったわね」

「演算子法を使うときは、上記の表を見て、m(s^2F-v)=-kFとおく。ただし、x(t)のラプラス変換をF(s)で表している」

「これをDERIVEに入力すれば、いいわけね」

「それが簡単じゃな。入力後にFについて解けば、F = mv/(k + ms^2)となる」

「近藤先生の本の対関数表を見ると1/(s^2+a^2)→sin(at)/aというのがあるので、F=v/(k/m+s^2)と変形すると、a=√k/m=ωなので、
f(t)=(v/ω)sin(ωt)ということが分る。こんなことかしら?」

「31.のところで出した結果と同一じゃな。当然ながら、結果は、一致するの」

「簡単!」

「そうじゃな。x(t)について線形の問題は、容易に解けるようじゃな。DERIVEのユーザファイルを使うとこうなる。
INVLaplace(mv/(k + ms^2), s, t)と入力して、計算すると、√mvSIN(√kt/√m)/√kが得られる。これは、ω=√(k/m)を使うと前述の式に一致する」

「なるほど」

「次回は、やり残している、DERIVEでの2階微分方程式の解法に関するユーティリティファイルを説明しよう」