检查matlab解微分方程组编程的错误

来源:百度知道 编辑:UC知道 时间:2024/05/31 04:30:16
我把二阶的微分方程组化成一阶的,用ode45编程计算,但是显示错误.
m文件是
function xdot=sys(t,x)
xdot=[x(2);
-0.48849789*(x(1)-x(3))+0.02811192*(x(2)-x(4));
x(4);
-x(3)+0.10060126*(x(1)-x(3))+0.00579*(x(2)-x(4))-0.006975824*x(4)];
在命令窗口运行的程序是
t0=0;f_final=20;
x0=[0;0.362;0;0.362];
[t,x]=ode45('sys',[t0,t_final],x0);
点击回车键就告诉错误
Error in ==> ode45 at 324
f(:,2) = feval(odeFcn,t+hA(1),y+f*hB(:,1),odeArgs{:});
我这个程序错在哪里啊,怎么修改?
或者帮我直接对下面的方程组进行matlab编程计算画图,最好用四阶龙格库塔法,请写的详细点,我是菜鸟
D2x1+a(x1-x2)+b(Dx1-Dx2)=0
D2x2+x2-c(x1-x2)-d(Dx1-Dx2)+eDx2=0
初始条件 x1(0)=0,x2(0)=0,Dx1(0)=f,Dx2(0)=f
a=2,b=3.c=5,d=9,e=5,f=10,这些参数值是我随便写的,可以改
f_final是错误的,应该为t_final,但是我在编程运算的时候就写的t_final,这个没有错误,根本问题不在这

问题找到了,f_final和t_final不同,自己骗了自己哦!改成一样的即可。
该谦虚就谦虚,该细心就得细心,这个问题与菜鸟无关,要自信噢!

放在一个程序里也可以,以下程序是通的:

function hh
t0=0;t_final=20;
x0=[0;0.362;0;0.362];
[t,x]=ode45(@sys,[t0,t_final],x0);
plot(t,x)
function xdot=sys(t,x)
xdot=[x(2);
-0.48849789*(x(1)-x(3))+0.02811192*(x(2)-x(4));
x(4);
-x(3)+0.10060126*(x(1)-x(3))+0.00579*(x(2)-x(4))-0.006975824*x(4)];

可能是函数名sys和文件名不一样的原因,你统一以下试试,或者在ode45中的函数名用文件名。