微分方程式の解法


  • 微分方程式の入力

    > ode1:={diff(y(t),t,t) + 5*diff(y(t),t) + 6*y(t) = 0};



  • 初期条件の設定

    > ic:={y(0) = 0,D(y)(0) = 1};



  • 解を求める

    > soln := dsolve(ode1 union ic, {y(t)});



  • 右辺を取り出す

    > op(2,soln);



  • 解をプロットする

    > plot(op(2,soln),t=0..5);



  • 解を関数として表現する

    > f:=unapply(op(2,soln),t);



  • 再び解をプロットする

    > plot(f(t),t=0..5);




  • 1階の線形微分方程式は次の標準型で表わすことができる。

    > xde1:={diff(y(t),t) + P(t)*y(t) = Q(t)};



  • 解を求めると

    > xsol1:= dsolve(xde1,{y(t)});



  • P、Q に任意の関数を当てはめ解を求めてみると

    > P := t -> 1;



    > Q:= t -> exp(t);



    > xsol2 := dsolve(xde1, {y(t)});



  • 別の関数を当てはめて解を求めてみると

    > P:= t -> -3/t;



    > Q:= t ->t;



    > xsol3 := dsolve(xde1, {y(t)});





  • 幾つかの微分方程式の解を求める

    > xde4:={diff(y(x),x) + 2*y(x) = exp(-x)};



    >xsol4 := dsolve(xde4, {y(x)});



    > xde5:={2*diff(y(x),x) - y(x) = exp(x/2)};



    xsol5 := dsolve(xde5, {y(x)});



    > xde6:={x*diff(y(x),x) + 3*y(x) = sin(x)/x^2};



    > xsol6 := dsolve(xde6, {y(x)});



    > xde7:={(x-1)^3*diff(y(x),x) + 4*(x-1)^2*y(x) = x+1};



    >xsol7 := dsolve(xde7, {y(x)});





  • DEtools を用いる

    >with(DEtools);



  • DEplot を用いると一般的な常微分方程式の解をプロットすることができます。

    書式は DEplot(ode,従属変数,独立変数の範囲,[初期条件リスト]) です。 

    >diffeq:=diff(y(x),x) = x + sin(y(x));



    >DEplot1(diffeq,y(x),x=-10..10,y=-10..10);



    >inits:=[0,-2],[0,-1],[0,0],[0,1],[0,2];



    >DEplot1(diffeq,y(x),x=-5..5,{inits},y=-5..5);



    >diffeq:=diff(y(x),x) + 2*y(x) = exp(-x);



    >inits:=[0,-2],[0,-1],[0,0],[0,1],[0,2];



    >DEplot1(diffeq,y(x),x=-10..10,{inits},y=-10..10);