グリーン(Green)関数を使って初期値問題を解く
GreenFunctionを使って非斉次微分方程式の初期値問題を解く.
まずグリーン関数を計算する.
In[1]:=
![Click for copyable input](assets.ja/solve-an-initial-value-problem-using-a-greens-func/In_114.png)
gf[s_, t_] =
GreenFunction[{-u''[t] + u'[t] - 37/4 u[t], u[0] == 0, u'[0] == 0},
u[t], {t, 0, \[Infinity]}, s]
Out[1]=
![](assets.ja/solve-an-initial-value-problem-using-a-greens-func/O_61.png)
強制関数を定義する.
In[2]:=
![Click for copyable input](assets.ja/solve-an-initial-value-problem-using-a-greens-func/In_115.png)
f[t_] := Cos[a t]
強制関数でグリーン関数をたたみ込むと,解が得られる.
In[3]:=
![Click for copyable input](assets.ja/solve-an-initial-value-problem-using-a-greens-func/In_116.png)
sol = Integrate[gf[s, t] f[s], {s, 0, \[Infinity]},
Assumptions -> t > 0]
Out[3]=
![](assets.ja/solve-an-initial-value-problem-using-a-greens-func/O_62.png)
DSolveValueで与えられる結果と比較する.
In[4]:=
![Click for copyable input](assets.ja/solve-an-initial-value-problem-using-a-greens-func/In_117.png)
DSolveValue[{-u''[t] + u'[t] - 37/4 u[t] == f[t], u[0] == 0,
u'[0] == 0}, u[t], t] // FullSimplify
Out[4]=
![](assets.ja/solve-an-initial-value-problem-using-a-greens-func/O_63.png)
パラメータ a のさまざまな値に対する解をプロットする.
In[5]:=
![Click for copyable input](assets.ja/solve-an-initial-value-problem-using-a-greens-func/In_118.png)
Plot[Table[sol, {a, 1, 4, 0.8}] // Evaluate, {t, 3, 6}]
Out[5]=
![](assets.ja/solve-an-initial-value-problem-using-a-greens-func/O_64.png)