主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

2階微分方程式の数値的な求解

この例では2階微分方程式を微分方程式系に変換し,MATLAB®の数値ソルバー数值を使用して解く方法を説明します。

高階数の常微分方程式を解く一般的な方法は,1階微分方程式系に変換して解くことです。この例では符号数学工具箱™を使用して2階颂歌を1階颂歌系に変換します。その後,MATLABソルバー数值を使用して方程式系を求解します。

2階颂歌から1階颂歌系への書き換え

odeToVectorFieldを使用してこの2階微分方程式を書き換えます。

d 2 y d t 2 1 - y 2 d y d t - y

変数の取り換えを使います。 y t Y 1 および d y d t Y 2 として,両方程式を微分すると,1階微分方程式系が得られます。

d Y 1 d t Y 2 d Y 2 d t - Y 1 2 - 1 Y 2 - Y 1

信谊y (t)[V] = odeToVectorField (diff (y, 2) = = (1 - y ^ 2) * diff (y) - y)
V =

Y 2 - Y 1 2 - 1 Y 2 - Y 1 [Y (2);- (y (1)^2 - 1)* y (2) - y (1)

MATLAB関数の生成

MATLAB颂歌ソルバーはシンボリック式を入力として受け付けません。したがって,MATLAB颂歌ソルバーを使用して方程式系を求解する前にMATLAB関数に変換しなければなりません。この1階微分方程式系からMATLAB関数を生成するには,matlabFunctionとVを入力として使用します。

M = matlabFunction (V,“var”, {“t”“Y”})
M =function_handle与价值:@ (t, Y) [Y (2); - (Y(1) ^ 2 - 1.0)。* Y (2) - Y (1)]

1階颂歌系の求解

この方程式系の解を求めるには,生成されたMATLAB関数を入力として使用し,MATLAB数值数値ソルバーを呼び出します。

溶胶= ode45(M,[0 20],[2 0]);

解のプロット

linspaceを使用して区間[0,20]で100点を生成し,德瓦尔を使用して各点の解を評価し,解をプロットします。

fplot (@ (x)德瓦尔(sol x, 1), [0, 20])

图中包含一个坐标轴。坐标轴包含一个functionline类型的对象。

参考

|||