ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

中立型初期値 DDE

この例では、ddensd を使用して 0 ≤ t ≤ 0.1 について Jackiewicz [1] により提示された初期値 DDE を解く方法を示します。

ddex5.mddex5.m をクリックするか、コマンド ウィンドウに「edit ddex5.m」と入力して、この例をエディターに表示します。

この方程式は、

y '(t) = 2cos(2t) y(t/2)2cos(t) + log(y '(t/2)) – log(2cos(t)) – sin(t) で与えられます。

この式は、t0 における遅延が 0 のため初期値 DDE になります。これらの初期条件は、

y(0) = 1

y '(0) = s,

ここで、s は、

2 + log(s) – log(2) = 0 の解です。

この方程式は、s1 = 2 と s2 = 0.4063757399599599 の場合に満たされます。

  1. 新しいプログラム ファイルをエディターで作成します。このファイルは、1 つのメイン関数と、1 つのローカル関数を含みます。

  2. DDE をローカル関数として定義します。

    function yp = ddefun(t,y,ydel,ypdel) 
    yp=2*cos(2*t)*ydel^(2*cos(t))+log(ypdel)-log(2*cos(t))-sin(t);
    end
  3. 解の遅延と導関数の遅延を定義します。このラインをメイン関数に追加します。

    delay = @(t,y) t/2; 

    この方程式では両方の遅延が同じなので、1 つの無名関数を使用することができます。

  4. 初期条件 y0 および s1 と、積分区間 tspan を定義します。このコードをメイン関数に追加します。

    y0 = 1;
    s1 = 2;
    tspan = [0 0.1];
    
  5. 初期条件 y(0) = 1 および y'(0) = 2 で、0 ≤ t ≤ 0.1 について DDE を解きます。このコードをメイン関数に追加します。

    sol1 = ddensd(@ddefun,delay,delay,{y0,s1},tspan);
  6. 今回は y'(0) = 0.4063757399599599 を使用して再び方程式を解きます。このコードをメイン関数に追加します。

    s2 = 0.4063757399599599;
    sol2 = ddensd(@ddefun,delay,delay,{y0,s2},tspan);
  7. 結果をプロットします。このコードをメイン関数に追加します。

    figure
    plot(sol1.x,sol1.y,sol2.x,sol2.y);
    legend('y''(0) = 2','y''(0) = .40638','Location','NorthWest');
    xlabel('time t');
    ylabel('solution y');
    title('Two solutions of Jackiewicz''s initial-value NDDE');
  8. プログラムを実行し、s の各値に対して解を計算してプロットします。

参照

[1] Jackiewicz, Z. “One step Methods of any Order for Neutral Functional Differential Equations.” SIAM J. Numer. Anal. Vol. 21, Number 3. 1984. pp. 486–511.

参考

関連する例

この情報は役に立ちましたか?