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

偏微分方程式の数値解

偏微分方程式を解く場合に、初期条件や境界条件を指定し numeric オプションを指定することで、偏微分方程式の数値解を求めることが出来ます。

> pdeq1 := diff(f(x,t), x) = -0.3*diff(f(x,t), t);

pdeq1 は 1 階の偏微分方程式なので、x ,t についてそれぞれ初期条件を定義します。

> ini1 := {f(x,0)=sin(x), f(0,t)=-sin(t)};

ini1 := {f(x,0) = sin(x), f(0,t) = -sin(t)}

pdsolvenumeric オプションを指定して実行します。
解はモジュール形式で返されその中に、プロットや値を評価するプロシージャ形式の解が含まれております。

> pds1 := pdsolve(pdeq1, ini1, numeric, time=t, range=0..1);

pds1 := module () local INFO; export plot, plot 3d, animate, value, settings; option 'Copyright (c) 2001 by Waterloo Maple Inc. All rights reserved. '; end module

次にこの解の t が変化する時のプロットを平面で作成するには以下の様に実行します。

> p1:=pds1:-plot(t=0, color=red):
p2:=pds1:-plot(t=1, color=blue):
p3:=pds1:-plot(t=2, color=green):plots[display](p1, p2, p3);

t を 0 から 1 まで変化させた時の3次元プロットを作成するには次の様に実行します。

> pds1:-plot3d(t=0..1, axes=boxed);

次に、2 階の偏微分方程式を解きます。

> pdeq2 := 1/2*diff(g(x,t), x, x) = diff(g(x,t), t);

この場合、初期条件が 2 つと境界条件が 1 つ必要になります。

> ini2 := {g(x,0)=1, g(0,t)=0, D[1](g)(1, t)=0};

ini2 := {g(x,0) = 1, g(0,t) = 0, (D1(g))(1,t) = 0}

> pds2 := pdsolve(pdeq2, ini2, numeric);

pds2 := module () local INFO; export plot, plot 3d, animate, value, settings; option 'Copyright (c) 2001 by Waterloo Maple Inc. All rights reserved. '; end module

値を評価するには、まず、どちらかの軸の値を固定した場合の解のプロシージャを変数に割り当てます。

> pv1 := pds2:-value(t=1);

pv1 := proc(x_pde) ...end proc

次にもう一つの軸の値を指定し実行します。

> pv1(0.4);

[x = 0.4, t=1., g(x,t) = 0.224827898577919682]



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

モデルベース開発