function dy=l3_7(t,x)global fiddy=zeros(6,1);x1=zeros(3,1);x2=zeros(3,1);x1=x(1:3);x2=x(4:6);A=[0 1 0; 0 0 1;0 0 0];B=[0 0 1]';a1=(x(1)^2+x(2)^2)*x(1);b1=1+x(1)^2+x(2)^2;a2=(sin(x(4)+x(5)^2));b2=1+x(4)^2;c1=(norm(x)^2)*[4 0 0; 0 4 0; 0 0 4+x(1)^2]*[x(4) x(5) x(6)]';c2=(norm(x)^2)*[-2 0 0; 0 -2 0; 0 0 -2+x(4)^2]*[x(1) x(2) x(3)]';d1=[0 0 1]'*0.05*sin(t);d2=d1;e1=sign([1 2.4142 2.4142]*x1);e2=sign([2 *2.4142]*x2);u1=-1/b1*(e1*0.05+a1+[1 2.4142 2.4142]*x1+((norm(x))^2)*x(1)^2*x(6));u2=-1/b2*(e2*0.05+a2+[2 4.8284 2*2.4142]*x2+((norm(x))^2)*x(4)^2*x(3));dy(1:3)=A*x1+B*(a1+b1*u1)+c1+d1;dy(4:6)=A*x2+B*(a2+b2*u2)+c2+d2;fprintf(fid,'%12.6e,%12.6e,%12.6e/n',t,u1,u2);以下是运行程序:%this grogram plot the t-x and t-u gram%the work next should be the comparetion of the isolate control %and control using internnectionglobal fidfid=fopen('myliu10.dat','w');[T,Y] = ode15I('l3_7',[0 10],[0.2 0.2 0.2 0.2 .2 .2]);fclose(fid)for i=1:6subplot(2,1,1) %一个FIGURE图形生成2行1列两个子图,subplot(2,1,1)后面一个1表示当前激活第1个子图。hold onplot(T,Y(:,i)); %plot(T,Y(:,1),'-k');,画Y数组中的第一列数随着T的变化曲线,‘-k’表示颜色黑色实线endxlabel('t');ylabel('X');fid=fopen('myliu10.dat','rt'); %我们要注意fopne的参数rt 而不是 ra=fscanf(fid,'%f,%f,%f',[3 inf]);fclose(fid);subplot(2,1,2)plot(a(1,:),a(2,:),'-',a(1,:),a(3,:),'-'); %plot(Y(end-2000:end,1),Y(end-2000:end,2),'-k');画出Y数组中第二列的最后两千零一个数,随着Y数组中第一列的最后两千零一个数的变化曲线bar(a(1,:),a(2,:));xlabel('t');ylabel('u');总是出错,哪位大侠帮忙看看啊!
|