function [rr,ss,kon,clw,clu0,s,ds,du]=lqexuni(b,a,k,nstep,qur,qy,ql,Rx,Sx) % %pridana penalizace dqy a dqu % % [rr,ss,kon,clw,clu0,s,ds,du]=lqexuni(b,a,k,nstep,qur,dqy,dqu,s0) % na=max(size(a))-1; nb=max(size(b)); m =nb+na + 3; % if (length(a) ~= n+1) error('incorrect dimension of parameters'); end % if (length(b) ~= n+1) error('incorrect dimension of parameters'); end w=1; msR=max(size(Rx)); msS=max(size(Sx)); if msR > nb, error('incorrect dimension of fixed controller'); end if msS > na+1, error('incorrect dimension of fixed controller'); end [pr,str]= abd2prei(b,a,k); [s,ds] = makese(str,1000); [dnz,don]= makedv(pr); % th= abd2the(n,b,a,k); th=pr(nb,:); qu=zeros(size(th));qdy=qu;dqy(1)=qu(1);; qss=qu;qss(1:msR) = Rx;;qu(1)=1; qss(nb+1: nb+msS-1) =Sx(2:msS); % qdy(nb+1)=1; qss(m-1)= - sum(Sx); qu(m)=-1; h=s*pr; [mm,nn]= size(h); hn= zeros(mm+1,nn); dn=eye(mm+1); [hu,hux,hxx,du,dx]= decomie(str,hn,dn); hux(1)=1; for i=1:nstep rtmultp(h,s,pr,dnz,don); rtrefor(h,ds,hn,dn); xx=th;xx(1)=th(1); xx(m-1) = -w; dxx=qy;dxx(1)=qy(1); % pen y-w rtreduc(hn,dn,xx,dxx); xx=qu;dxx=qur;xx(1)=qu(1);dxx(1)=qur(1); %pen u-u0 rtreduc(hn,dn,xx,dxx); xx=qss; dxx=ql;xx(1)=qss(1);dxx(1)=ql(1); %pen dqy rtreduc(hn,dn,xx,dxx); rtdecom(hn,dn,hu,hux,s,du,ds); end rr=hux(1:nb);ss=hux(nb:na +nb);kon=hux(m-2);ss(1)=0; clw=hux(m-1); % clw=- sqrt((dqy +qur)/du); clu0= hux(m);