天天看點

matlab ode45 二階微分,matlab關于ode45解二階微分方程的困惑

matlab關于ode45解二階微分方程的困惑

matlab關于ode45解二階微分方程的困惑

一個二階微分方程:

y''+y'+y=sin(t)

初始條件為y(0)=5,y'(0)=6。

過程:

先降階為一階微分方程組

y'=z

z'=-z-y+sin(t)

編制如下函數m檔案

function dy=weifen(t,x)

dy=zeros(2,1);

%y=x(1)

%z=x(2)

dy(1)=x(2);

dy(2)=sin(t)-x(2)-x(1);

*******************

然後用ode45解方程

[t,y]=ode45(@weifen,[0 20],[5 6])

plot(t,y)就可以畫出y和y'的圖像

但是我用同樣的思路,是不過在函數檔案的編制時候将函數的代表意義換一下,結果出來的圖形就完全不一樣了?

即我的m檔案重新編制為

function dy=weifen(t,x)

dy=zeros(2,1);

%y=x(2)

%z=x(1)

dy(1)=x(1);

dy(2)=sin(t)-x(1)-x(2);

*******************

然後同樣用ode45解方程,根據函數檔案隻需将初始條件換一下位置

[t,y]=ode45(@weifen,[0 20],[6 5])

plot(t,y)就可以畫出y和y'的圖像,但是結果完全不一樣了,怎麼回事?

難道必須有一定的順序麼?