第一题
A=179;N=100,c=1; %初始化; x0=11;M=2^35;
for k=1:N %乘同余法递推100次;
x2=A*x0+c; %x2和x0分别表示xi和x(i-1);
x1=mod(x2,M); %将x2存储器的数除以M,取余数放x1(xi)中;
v1=x1/(M+1); %将x1存储器中的数除以(M+1)得到小于1的随机数放v1中;
v(:,k)=v1; %将v1中的数存放在矩阵存储器v的第k列中,v(:,k) %表示行不变、列随递推循环次数变化; x0=x1; %x(i-1)=xi; v0=v1;
end %递推100次结束;
v2=v %实现矩存储器v中的随机数放在v2中; k1=k;
%grapher %绘图程序 k=1:k1;
plot(k,v,k,v,'r');
xlabel('k'),ylabel('v'),title('(0-1)均匀分布的随机序列')
第二题
A=179;N=100; %初始化; x0=11;M=2^35;
for k=1:N %乘同余法递推100次;
x2=A*x0; %x2和x0分别表示xi和x(i-1);
x1=mod(x2,M); %将x2存储器的数除以M,取余数放x1(xi)中;
v1=x1/(M+1); %将x1存储器中的数除以(M+1)得到小于1的随机数放v1中;
v(:,k)=v1; %将v1中的数存放在矩阵存储器v的第k列中,v(:,k) %表示行不变、列随递推循环次数变化; x0=x1; %x(i-1)=xi; v0=v1;
end %递推100次结束;
v2=v %实现矩存储器v中的随机数放在v2中; k1=k;
%grapher %绘图程序 k=1:k1;
plot(k,v,k,v,'r');
xlabel('k'),ylabel('v'),title('(0-1)均匀分布的随机序列')
第三题 可调增益 Lyapunov-MRAC
clear all;close all;
h=0.1;L=100/h; %数值积分步长和仿真步数(减小h,可以提高积分精度) num=[2 1]; den=[1 2 1]; n=length(den)-1; %对象参数(严格正实)
kp=1;[Ap,Bp,Cp,Dp]=tf2ss(kp*num,den); %对象参数(传递函数型转换为状态空间型)
km=1;[Am,Bm,Cm,Dm]=tf2ss(km*num,den); %参考模型参数 gamma=0.1; %自适应控制
yr0=0; u0=0; e0=0; %初值
xp0=zeros(n,1); xm0=zeros(n,1); %状态向量初值 kc0=0; %可调增益初值
r=2; yr=r*[ones(1,L/4) -ones(1,L/4) ones(1,L/4) -ones(1,L/4)]; %输入信号
for k=1:L
time(k)=k*h;
xp(:,k)=xp0+h*(Ap*xp0+Bp*u0); yp(k)=Cp*xp(:,k); %计算yp
xm(:,k)=xm0+h*(Am*xm0+Bm*yr0); ym(k)=Cm*xm(:,k); %计算ym e(k)=ym(k)-yp(k); %e=ym-yp
kc=kc0+h*gamma*e0*yr0; %Lyapunov-MRAC自适应律 u(k)=kc*yr(k); %控制量
%更新数据
yr0=yr(k);u0=u(k);e0=e(k); xp0=xp(:,k);xm0=xm(:,k) kc0=kc; end
subplot(2,1,1);
plot(time,ym,'r',time,yp,':');
xlabel('t');ylabel('y_m(t)、y_p(t)'); legend('y_m(t)','y_p(t)'); subplot(2,1,2); plot(time,u);
xlabel('t');ylabel('u(t)');
第四题 可调增益 MIT-MRAC
clear all; close all;
h=0.1; L=100/h; %数值积分步长、仿真步数
num=[1]; den=[1 1 1]; n=length(den)-1; %对象参数
kp=1; [Ap,Bp,Cp,Dp]=tf2ss(kp*num,den); %传递函数型转换为状态空间型 km=1; [Am,Bm,Cm,Dm]=tf2ss(km*num,den); %参考模型参数 gamma=0.1; %自适应增益
yr0=0; u0=0; e0=0; ym0=0; %初值
xp0=zeros(n,1); xm0=zeros(n,1); %状态向量初值 kc0=0; %可调增益初值
r=1.2; yr=r*[ones(1,L/4) -ones(1,L/4) ones(1,L/4) -ones(1,L/4)]; %输入信号
for k=1:L
time(k)=k*h;
xp(:,k)=xp0+h*(Ap*xp0+Bp*u0); yp(k)=Cp*xp(:,k)+Dp*u0; %计算yp
xm(:,k)=xm0+h*(Am*xm0+Bm*yr0); ym(k)=Cm*xm(:,k)+Dm*yr0; %计算ym
e(k)=ym(k)-yp(k); %e=ym-yp
kc=kc0+h*gamma*e0*ym0; %MIT自适应律 u(k)=kc*yr(k); %控制量
%更新数据
yr0=yr(k);u0=u(k);e0=e(k);ym0=ym(k); xp0=xp(:,k);xm0=xm(:,k); kc0=kc; end
plot(time,ym,'r',time,yp,':');
xlabel('t'); ylabel('y_m(t)、y_p(t)') %axis([0 L*h -10 10]);
legend('y_m(t)','y_p(t))');