function ps9_3(d) % function ps9_3(d) % % code for checking correctness of the solution of 6.245 Problem 9.3 n=10; % number of states N=5000; % number of samples if nargin<1, d=1.1; end % default argument D=randn; % generate a random system C=randn(1,n); B=randn(n,1); A=randn(n); A=A-(0.1+max(real(eig(A))))*eye(n); % adjust to make stable w=linspace(0,50,N); % calculate min|G| g=squeeze(freqresp(ss(A,B,C,D),w)); M=min(abs(g)); M=min(M,abs(D)); D=D*(d/M); % adjust min|G| C=C*(d/M); if abs(D)<=1, disp('D condition not satisfied') else disp('D condition satisfied') di=1/(D'*D-1); H=[A-B*di*D'*C B*di*B';C'*(1-D*di*D')*C -(A-B*di*D'*C)' ]; minabsre=min(abs(real(eig(H)))); disp(['minimal absolute value of Re is ' num2str(minabsre)]) end close(gcf) plot(w,abs(g)*(d/M)); grid