回 帖 发 新 帖 刷新版面

主题: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'的图像

回复列表 (共1个回复)

沙发

[quote]不过在函数文件的编制时候将函数的代表意义换一下
[/quote]
一个高阶常微分方程式可以利用变数改变(change of variables) 方式改写成个一组联立的一阶常微分方程式。 例如以下的 n 阶方程式 
y^(n)=g(x,y,y',y''....y^(n))
这也就是降阶的思想!
然而在function dy=weifen(t,y) 中
y(1) y(2) ...代表意义ode45 默认为y,y',y''....
所以,到这相信你应该能看出你的变换所产生的不同结果!

[quote]然后同样用ode45解方程,根据函数文件只需将初始条件换一下位置
[/quote]
即便上面的结果不发生变化,这果你也会形成差异!
初始条件换一下位置代表的是y(0)=6,y'(0)=5
这好像与上面的变换扯不上关系.

我来回复

您尚未登录,请登录后再回复。点此登录或注册