Mapleトップページ
サポート・マニュアル

常微分方程式の数値解

微分方程式を解く際に、初期条件等の条件を指定し numeric オプションを使用すると、微分方程式の数値解を求めます。
式によっては一般解が存在しないものもあり、そのような場合は数値解を求めることも一つの有効な方法です。

微分方程式と初期条件を定義します。

> deq := diff(f(x),x) = x*f(x);

> ini := f(0)=1;

ini := f(0) = 1

dsolve コマンドに numeric オプションを指定し実行します。
引数には、({微分方程式, 初期条件}, numeric ) の順で入力します。

> sol1 := dsolve({deq, ini}, numeric);

sol1 := PROC(x_rkf45) ...end proc

解はプロシージャの形式で出力されます。
適当な値を入力し解を確認してみます。

> sol1(1.5);

[x = 1.5, f(x) = 3.08024830933365878]

上記のように dsolve コマンドと numeric オプションを使用した場合は、横軸の変数 x とその時の高さを表す関数 f(x) の 2 つの値を返すプロシージャの解が出力されます。
その為、次にプロットを行いたい場合などは扱いにくい部分があります。
そのような場合、output=listprocedure オプションを使用するしそれぞれのプロシージャに分けて解を出力します。

> sol2 := dsolve({deq, ini}, numeric, output=listprocedure);

sol2 := [x = proc(x) ...end proc, f(x) = proc(x) ...end proc]

f(x) の解は要素を指定して取り出せます。

> sol2[2];

f(x) = proc(x) ...end proc

f(x) = の部分は不要ですので右辺だけを取り出して、変数に割り当てプロシージャを定義します。

> ff := rhs(sol2[2]);

ff := proc(x) ...end proc

適当な値を入力し解を確認します。

> ff(1.5);

3.08024830933365878

プロットを実行し確認します。

> plot(ff(x), x=0..1);



お問い合わせ サイバネットシステム株式会社 システムCAE事業部
TEL: 03-5297-3299 (受付時間 9:00〜12:00 / 13:00〜17:30 ※土日祝及び弊社休業日を除く)
メールでのお問い合わせ  お問い合わせフォーム  お問い合わせ一覧

モデルベース開発