ネムネコ、件の微分方程式で木っ端微塵になる!! [ひとこと言わねば]
実は、昨夜、
ddt³さんも取り上げてくださった
という微分方程式に、初期条件x₀=−1、y₀=−1をあたえて、オイラー法とルンゲ・クッタ法を用いて、数値的に解かせてみたんだケロ。
(1)の一般解は
になるので、この初期条件を与えると、
という特殊解が得られる。
計算領域を−1≦x≦1とし、これを80分割に等間隔に分割、つまり、分割幅Δx=0.025で解かせた結果は次の通り。
Euler法はともかく、ルンゲ・クッタ法による計算結果はよく合っているように見えるかもしれない。
しかし、解が±∞に発散するような点を計算領域近くに持たないような微分方程式の場合、これくらい分割幅Δxを小さくとると、計算機の丸め誤差の範囲内で、ルンゲ・クッタ法を用いた数値解は厳密解である曲線y=x³上にピタリと乗るもんなんだにゃ。
だ・か・ら、ルンゲ・クッタ法によるこの計算結果はあまり合っていない、考えないとダメなんだケロ。
もし、同一の条件で、計算領域をx=2まで拡大させた場合、上の図の曲線を右方向に延長させる(外挿する)ことによって、x=2におけるyの数値解と厳密解との差がかなり大きくなることが容易に想像つくにゃ。x=1におけるこの差はもはや致命的と言ってもいいレベルなんだケロよ。
この計算は単精度で計算しているので、丸めや桁落ち、積み残しといった計算機特有の誤差で一致の具合が思わしくないのかもしれない。
この可能性は否定できないけれど、ルンゲ・クッタ法などの一般的な数値計算法では、この(非線形)微分方程式(1)を解くのは難しいのかもしれないね。倍精度で計算しても、この状況はあまり改善されないと思う。
この後に出てくる(4)式を見ると、カオス的状況をもたらすロジスティック曲線やマンデブロ集合の漸化式と同様に、ヤバそうな形をしているし・・・。現に、ルンゲ・クッタ法の計算結果を見ると、計算を進めれば進めるほど、誤差が雪だるま式に増えていっているし・・・。
それはそれとして、もし、x=0における微分方程式(1)のyの数値解が、丸めや打切誤差などの兼ね合いで、たまたま、運悪く、y=0になったとしたら、Euler法やルンゲ・クッタ法を用いたx>0以上の数値解はどうなると思う?
答は、曲線y=x³線上(近く)の値ではなく、x>0以上の点ではy=0という結果を出すにゃ。つまり、特殊解(2)ではなく、特異解y=0、すなわち、x軸上を走りだすんだケロ。
ルンゲ・クッタだと、ちょっと面倒なので、なぜ、そうなるかEuler法を用いて説明するにゃ。
Euler法による、微分方程式の漸化式は、次のようになる。
この式を見ると、という値を一度とると、n≧kではになることがわかるにゃ。これと同様の理由で、ルンゲ・クッタ法も、このトラップ、蟻地獄から永遠に抜け出せない。
しかし、考えてみると、x=0のときy≠0という正しくない解だと正しいとされるy=x³近くの値を出してくれるのに、x=0のときy=0のときは特殊解y=x³ではなく特異解y=0を出すのだから、妙な話だにゃ。
そう思わないケロか?
もしかりに、y=x³のx≦0だけのグラフを見せられたとするにゃ。要するに、y=x³のグラフの左側半分。このグラフを見て、(0,0)が変曲点で、こっから曲線の凸凹が変わって、上のグラフのように進むなんて予想できるケロか。このあと、x軸上を進むと思うのが人情だと思うにゃ。だから、Euler法やルンゲ・クッタ法を責めてはいけないにゃ。むしろ、これが正常な判断だと思うにゃ。
そして、
ddt³さんが違った数値解法で微分方程式(1)の数値解を求めてくださるかもしれない(笑)。
餅は餅屋、焼き鳥は焼き鳥屋に任せるのが一番だにゃ。
実は、Euler法は一階の常微分方程式の特殊解(特別解)や一般解の説明によく使われる。
分割幅Δxをどんどん0に近づければ、Euler法による(丸め誤差を含まない)数値解は限りなくある一つの曲線(一般解に特定の値を与えた特殊解)に近づく。その極限の曲線が特殊解であり、その特殊解を全部集めたものが一般解みたいな話。
しかし、よくされる、この説明が正しいのならば、
が特殊解であり、
こそが一般解みたいな話になりなねない。
(6)に含まれている任意定数は、1つだし(^^)
思うに、
(2)式ではなく、ネムネコが提出した(6)式が微分方程式(1)の一般解になる日は近いに違いない。
[微分方程式の一般解] [微分方程式の解法]
[微分方程式の一般解]
根――ネムネコは、この漢字を「ね」と読めず、「こん」と読んで『微分方程式の解のことか』と、しばし混乱する(^^ゞ――がずぼらなせいか、微分方程式の一般解について厳密に考えた事はなかったんですが(だって計算はできるもん(^^))、今回はちょっと反省してみました。
例としては、
ですね。自分の普段の方針は変数分離形の求積公式を使うにしても、気をつけて場合分けすれば実用的に問題になる事はまずない・・・です(^^;)。とは言うものの気になったので、最初に(1)の位相空間での軌道を確認します。下図です。
y=y(x)は任意のyで単調増加です。でもy=0において角が立ってます。こういう場合、y(x)は任意のyで単調増加なんだけれど、例えばy<0から出発した軌道(初期条件がy(0)<0の解)は、y=0にどこまでも近づきますが、xを時間とすれば、y=0に達するには無限の時間を要します。y=0において、位相空間での軌道に角が立ってるからです。これがcosxやsinxのようにdy/dx=0の点で位相空間での軌道が滑らかだと、同じ単調増加や単調減少であっても、解はそこをすぅ~と抜けて行きます。
逆にy=0を初期条件に持つ解は、y=0から抜け出すのに無限の時間がかかります。こういうケースでは、ネコ先生の仰る様に「解の分岐」があり得ます。
なのでy(x)=0は特異解と言っても良いんですが、自分にはそれを「特異」と呼ぶのにはちょっと抵抗があります。さっきの事情からy(0)=0を初期条件に持つ解は、永遠にy(x)=0から動けないのです。またy<0から出発した解は、y=0に達するには無限の時間がかかり、しかも間違って到達してしまったら、永遠にそこから動けないのです。永遠に一点から動けない解って、安定不動点ですよね?(^^;)。正式に何と呼ぶべきか、確認した事はありませんが。
さて、さっきの微分方程式を変数分離形の求積公式を使って解きましょう。経験的に言って、厳密な場合分けは必須です。
(Case-1):y≠0
(1)より、
ここでCは任意定数で、途中でC/3をCに置きかえました。
(Case-2):y=0
(1)より、
ですが、Cは任意定数なのでy(x)は定数関数。従って、どこかでy=0ならば、y(x)の初期条件はy(0)=0となり、だとしてもC=0とする事はCは任意定数なので可能。従ってy(x)=0は(1)の解。(ネムネコの呟き)
さて、(2)と(3)を合体できるか検証します。・・・出来ません!。(2)のCがなんであろうと、(2)のy(x)=(x+C)3と(3)のy(x)=0が、「関数として」一致する事はありません。
エッ、x=-Cとすればy(-C)=(-C+C)3=03=0じゃないの?。それは正しいんですが、(2)のy(x)がy=0となるのは、x=-Cの時のみです。x=-Cでなかったら(2)のy(x)は、例えばδ≠0かつx=-C+δとして、明らかにy(-C+δ+C)=δ3≠0です。(2)のCがなんであろうと、(2)のy(x)=(x+C)3と(3)のy(x)=0が、「関数として」一致する事はありません。
なので自分は面倒なので、(3)のy(x)=0は特殊解とみなす事にしてます。そして(2)が一般解です。ところが次の定義があるんですよ。
[定義-1]
問題になっている一階微分方程式を満たし、任意定数を一個だけ含むものを、その一階微分方程式の一般解と言う。
[定義-2]
何故なら特定の初期条件を与えた特殊解は、一般解の任意定数を初期条件によって固定したものとして表せるからである。これを特殊解の定義とする。
困っちゃいますよね(^^;)。だって[定義-1,2]によれば、(3)のy(x)=0は、(2)の任意定数Cをいかに定めても表せないのですから。しかし(2)は、「問題になっている一階微分方程式を満たし、任意定数を一個だけ含むもの」ですから一般解であるにも関わらず、任意定数をいかに与えようとも特殊解(3)を表せません。
でも、ものは考えようです(^^;)。
[定義-1,2]ってのは、一階微分方程式には常に初期条件分の不定性がある、って事ですよね?。
でどうでしょうか?。
「問題になっている一階微分方程式を満たし、任意定数を一個だけ含むもの」が一般解であり、「一般解の任意定数を初期条件によって固定したもの」が特殊解なんですから、(4)は[定義-1,2]も、(2)と(3)の結果も満たすじゃないですか(^^)。
これが「天空活殺」なみの反則技である事は認めます(^^)。でもこう考えれば、厳密に場合分けする限り安全である事を納得できます(^^)。いっぱい突っ込まれそう・・・(^^;)。
(執筆:ddt³さん)
(ネムネコの呟き)
ここのy=0はどういう意味なのだろう・・・。
Case−Ⅰ
任意のx∈Rに対してy(x)=0の意味だとすれば、C=0なのでは。
Case−Ⅱ
ではなく、すべてのxに対してy=y(x)=0の定数関数ではないが、で局所的にになるという意味ならば、(3)式の第1式は、
になるのでは。
つまり、(3)の第1式は点における曲線y=y(x)の微分係数を表すもので、全体を決定する微分方程式ではないので、これからyが定数Cであるとはいえない。
ですが、ここで、これまで通ってきた曲線y=(x+C)³を進むべきか、もう一つの道である定数関数y=0(x軸)を進むべきか、わからなくなり、道に迷ってしまうのは事実(^^ゞ
この点にさしかかったとき、微分方程式(1)の解の一意性が破れてしまう。つまり、たとえ、Cに特定の値を与えた特殊解であっても、その特殊解とx軸との交点からだけではその後どの道を辿るか決定できず、(その後の)微分方程式(1)の解を1つに特定できないんです。これで定められるのは、いわゆる一般解y=(x+C)³のCに特定の値を与えた特殊解(特別解)だけなんです。
ddt³さんのCを−Cに置き換えたものだが、微分方程式の一般解の曲線の一部を下に図に示す。
さらに、一般解y=(x+C)³と特異解y=0の他に、この2つの解を部分的に組み合わせた、次の3つのタイプのものも微分方程式(1)の解になりえるんです。(下の図に、色分けして、示してある)
この図を見ると、y=0となる点、すなわち、x軸上の点で微分方程式(1)の解の一意性(初期条件を1つ与えると1階常微分方程式の解は1つに決まる)が破れることがわかるんじゃないでしょうか。そして、特異解を除くと、少なくともy<0の点とy>0の点の2点ないと、この曲線の形(解の全貌)が定まらないことも。
さらに、定数関数y=0でなくても、この3タイプの微分方程式(1)の解は、いずれも、y(x)=0となる点xを無数(自然数の無限個を越える)に持つこともわかる。
「たまたま例外的にy=0になる点が高々可算(有限の個数、または、自然数程度の無限個の個数)個くらいあるだけだから、ここは、あまりうるさいことを言わず大目に見よう」というわけにはいかないにゃ。