034100643 发表于 2007-5-6 09:38

求助,用ODE45来求解连续方程,但是程序运行出现错误

我用ODE45来求解连续方程,但是程序运行出现错误,希望高手帮我查找一下!!
仿真主程序:clear all;
close all;
global F
x0=;
ts=0.001;
T=5.0;
TimeSet=;
para=[];
=ode45('chap_4eq',TimeSet,x0,[],para);
switch F
    case 1
      r1=pi/6;r2=pi/6;
      dr1=0;dr2=0;
    case 2
      r1=sin(3*t);r2=cos(3*t);
      dr1=3*cos(3*t);dr2=-3*sin(3*t);
    case 3
      r1=sign(sin(3*t));r2=sign(sin(3*t));
      dr1=0;dr2=0;
end
figure(1);
plot(t,r1,'r',t,y(:,1),'b');
xlable('time(s)');ylable('r1,x(1)');
figure(2);
plot(t,dr1,'r',t,y(:,2),'b');
xlable('time(s)');ylable('dr1,x(2)');
figure(3);
plot(t,r2,'r',t,y(:,3),'b');
xlable('time(s)');ylable('r3,x(3)');
figure(4);
plot(t,dr2,'r',t,y(:,4),'b');
xlable('time(s)');ylable('dr2,x(2)');
控制子程序:
function dx=PlantModel(t,x,flag,para)
global F
dx=zeros(4,1);
F=2;
switch F
    case 1
      r1=pi/6;r2=pi/6;
      dr1=0;dr2=0;
      ddr1=0;ddr2=0;
    case 2
      r1=sin(3*t);r2=cos(3*t);
      dr1=3*cos(3*t);dr2=3*sin(3*t);
      ddr1=-3*3*sin(3*t);ddr2=-3*3*cos(3*t);
    case 3
      r1=sign(sin(3*t));r2=sign(sin(3*t));
      dr1=0;dr2=0;
      ddr1=0;ddr2=0;
end
dr=;
ddr=;
e1=x(1)-r1;
de1=x(2)-dr1;
e2=x(3)-r2;
de2=x(4)-dr2;
kp1=3000;kv1=230;
kp2=2000;kv2=210;
D11=2.462;
D22=0.362;
D12=0.147;
D21=0.147;
M=[D11 D12*cos(x(1)-x(3));
   D21*cos(x(1)-x(3)) D22];
G=[D12*x(4)^2*sin(x(1)-x(3));
   -D12*x(2)^2*sin(x(1)-x(3))];
C=[-x(4)*sin(x(3)) -(x(2)+x(4))*sin(x(3));
    x(2)*sin(x(3)) 0];
S=3;
switch S
    case 1
      u1=-kp1*e1-kv1*de1;
      u2=-kp2*e2-kv2*de2;
    case 2
      u1=-kp1*e1-kv1*de1+M(1,:)*ddr+C(1,:)*dr+G(1);
      u2=-kp2*e2-kv2*de2+M(2,:)*ddr+C(2,:)*dr+G(2);
    case 3
      Md=[D11 D12*cos(r1-r2);
            D21*cos(r1-r2) D22];
      Gd=[D12*dr1^2*sin(r1-r2);
            -D12*dr2^2*sin(r1-r2)];
      Cd=[-dr2*sin(r2) -(dr1+dr2)*sin(r2);
            dr1*sin(r2)0];
      u1=-kp1*e1-kv1*de1+Md(1,:)*ddr+Cd(1,:)*dr+Gd(1);
      u2=-kp2*e2-kv2*de2+Md(2,:)*ddr+Cd(2,:)*dr+Gd(2);
end
tol=;
Q=inv(M)*(tol-C*-G);
dx(1)=x(2);
dx(2)=Q(1);
dx(3)=x(4);
dx(4)=Q(2);

[ 本帖最后由 xinyuxf 于 2007-5-8 15:28 编辑 ]

cdwxg 发表于 2007-5-8 11:40

这么长的程序:)请说下是哪里错了,否则太长了...

034100643 发表于 2007-5-8 18:18

回复

后面的子程序里运行时说需要定义T和X,但是X是一个变量,不知道如何设置!!有知道的说下,谢谢!!

cdwxg 发表于 2007-5-10 19:19

原帖由 034100643 于 2007-5-8 18:18 发表 http://forum.vibunion.com/forum/images/common/back.gif
后面的子程序里运行时说需要定义T和X,但是X是一个变量,不知道如何设置!!有知道的说下,谢谢!!
这个问题现在解决了?
怎么解决的?

034100643 发表于 2007-5-11 09:52

回复 #4 cdwxg 的帖子

问题解决了!!我也没改它,在同学的电脑上运行不了,在自己的电脑上随便改了下就可以运行了!!我再看看有什么不同的地方吧!!!:@)
页: [1]
查看完整版本: 求助,用ODE45来求解连续方程,但是程序运行出现错误