📄 antsimu.m
字号:
function [y,f]=antsimu(kp,ti,td)
%kp=0.5;ti=2;td=2;
a=[0,1,0;0,0,1;-1,-2,-3];b=[0;0;1];c=[5,0,0];d=0;
t1=-a(3,3);t2=-a(3,2);t3=-a(3,1);t4=0;t5=c(1)*kp*td;t6=c(1)*kp;t7=c(1)*kp/ti;
h=0.01;%T=0.005;
for n=1:2002
u(n)=0;e(n)=0;y(n)=0;
end%ef(i,j)=0;ym(i,j)=0;%e为控制器输入,ef为输出偏差;
%初始状态置零
x1=0;x2=0;x3=0;f=0;x4=0;
%龙格库塔求控制作用
for m=1:20/h
%for n=1:1:2
%if m==1
%e(m)=1;
%else
%e(m)=1-y(m-1);
%end
%end
%u(m+2)=u(m+1)+kp*(e(m+2)-e(m+1))+kp/ti*e(m+2)+kp*td*(e(m+2)-2*e(m+1)+e(m));
%ut=u(m+2);
%x1=0;x2=0;x3=0;x4=0;
%龙格库塔求输出
k11=h*x2;
k21=h*x3;
k31=h*x4;
k41=h*(-t4*x1-t3*x2-t2*x3-t1*x4+e(m));
k12=h*(x2+0.5*k21);
k22=h*(x3+0.5*k31);
k32=h*(x4+0.5*k41);
k42=h*(-t4*(x1+0.5*k11)-t3*(x2+0.5*k21)-t2*(x3+0.5*k31)-t1*(x4+0.5*k41)+e(m));
k13=h*(x2+0.5*k22);
k23=h*(x3+0.5*k32);
k33=h*(x4+0.5*k42);
k43=h*(-t4*(x1+0.5*k12)-t3*(x2+0.5*k22)-t2*(x3+0.5*k32)-t1*(x4+0.5*k42)+e(m));
k14=h*(x2+k23);
k24=h*(x3+k33);
k34=h*(x4+k43);
k44=h*(-t4*(x1+k13)-t3*(x2+k23)-t2*(x3+k33)-t1*(x4+k43)+e(m));
x1=x1+(k11+2*k12+2*k13+k14)/6;
x2=x2+(k21+2*k22+2*k23+k24)/6;
x3=x3+(k31+2*k32+2*k33+k34)/6;
x4=x4+(k41+2*k42+2*k43+k44)/6;
y(m)=t7*x1+t6*x2+t5*x3;
e(m+1)=1-y(m);
f=f+abs((m)*e(m+1));
%if y(m)>1.1
%break;f=0;
%end
end
%plot(y(1,:),'r');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -