clc;
clear all;
n=1
while(n<5000) % 第ä¸è¿ä»£å¨ææ§å¶é?
uk(n)=0;
n=n+1;
end
uk1(1)=0; % 第äºè¿ä»£å¨ææ§å¶é?
k_p_1=9;
k_p_2=2 %å¢çç©éµ
k_d=1; %å¦ä¹ å¢çç©éµ
q=9;
p=11; %è¿ä»£å¾®åç³»æ°
T=0;
T_step=0.001; %仿çæ¥é¿
A=[0 1; %ç¶ç?ß©é?
-2 -3];
B=[0; %è¾å
¥ç©éµ
1];
C=[0 1]; %è¾åºç©éµ
D=[0]; %åé¦ç©éµ
n=1;
while(n<5000) %产çåé?Û²çº?
yd(n) = 90 * ((T/5)^5-2.5 * (T/5)^4 + 5/3 * (T/5)^3);
ArryT(n)=T;
n=n+1;
T=T+T_step;
end
ILC_n=1;
while(ILC_n<20) %è¿ä»£æ¬¡æ°
x=[0; %ç¶ç?Ðé?
0];
n=1;
while(n<5000) % æ§å¶è¿ç¨
k1 = A * x + B * uk(n);
k2 = A * (x + k1 * T_step / 2)+ B * uk(n);
k3 = A * (x + k2 * T_step / 2)+ B * uk(n); %é¾æ ¼åºå¡æ¹ç¨
k4 = A * (x + k3 * T_step)+ B * uk(n);
x = x + (T_step * (k1 + 2 * k2 + 2 * k3 + k4)/6);
yk(n)= C * x + D * uk(n);
ek(n)= yd(n) - yk(n);
n=n+1;
if(n==5000)
break;
end
uk(n) = uk(n) + k_d * k_p_1 * ek(n-1)^(q/p)+k_d * k_p_2 * ek(n-1);
end
ek = yd - yk; %误差
[J(ILC_n),index]=max(ek);
dot_ek(1)= (ek(1)-0)/T_step;
n=2
while(n<5000)
dot_ek(n) = (ek(n)-ek(n-1))/T_step; %误差导æ°
n=n+1;
end
uk1 = uk + k_d * (0 * ek + dot_ek); %计ç®ä¸ä¸æ¬¡çæ§å¶é?
uk=uk1;
ILC_n=ILC_n+1;
end
n=1;
while(n<20)
ILCn(n)=n;
n=n+1;
end
figure
plot(ArryT,yd);
hold
plot(ArryT,yk,'r');
figure
plot(ArryT,ek,'r');
figure
plot(ILCn,J);
评论1