用matlab解二阶方程组

来源:百度知道 编辑:UC知道 时间:2024/05/28 04:22:37
我把二阶的微分方程组化成一阶的,用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,我在编程计算的时候并没有写错,问题不在这点

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

四个未知数连个方程解决不了。不要用X2 X4 统一下Dx1 Dx2 要么把1式里Dx1用2式里Dx1替换,化简成Dx2=....形式,这样1式中只有一个微分了。 同理化简2式再用0de45换算就行了。要不就用隐式微分方程计算,化成矩阵方程组