// Script #1 (main types) var s1=new series([1,3],[3,5],2,1); // args=p,q,nu,tau var s2=mmgd("d4+g2.d7+(g4.d10).[g2.d3]*"); // s2 var m1=new smatrix([[s1,s1,s1],[s2,s2,s2]]); m1.set(0,1,seps()); output.value='s1='+s1+'\n'; //default string format output.value+='s1='+s1.etvo()+'\n'; // etvo compatible format output.value+='s2='+s2.etvo()+'\n'; // etvo compatible format output.value+=m1+'\n'; output.value+=m1.etvo()+'\n'; output.value+='m1(0,2)='+m1.get(0,2).etvo()+'\n'; //Script #2 // shortcut functions var eps=seps(); //new series([],[],0,0) var e=sgd(0,0); // series g0.d0 var m1=sgd(2,5); // series g2.d5 var p1=spoly([0,1,2,5,3,6]); // series g0.d1+g2.d5+g3.d6 var s1=sseries([0,3],[2,5,3,6],3,4); // series g0.d3+(g2.d5+g3.d6).[g3.d4]* // it is also possible to parse rational expressions var p2=mmgd("g0.d1+g2.d5+g3.d6"); var s2=mmgd("g0.d3+(g2.d5+g3.d6).[g3.d4]*"); output.value=m1.etvo()+'\n'; output.value+=p1.etvo()+'\n'; output.value+=s1.etvo()+'\n'; output.value+=p2+'\n'; output.value+=s2+'\n'; //Script #3 (main operations) s1=mmgd("d1+(g1.d2+g2.d3).[g2.d2]*"); //series([0,1],[1,2,2,3],2,2); s2=mmgd("d4.[g3.d3]*"); // series([],[0,4],3,3); s3=mmgd("d3.[g4.d5]*"); // series([],[0,3],4,5); s0=mmgd("g3.d4+g5.d6"); // poly([3,4,5,6]); output.value = s1.etvo()+'\n'; var s4=s2.oplus(s3); output.value += s4.etvo()+'\n'; output.value+='s4.p='+s4.p+'\n'; output.value+='s4.q='+s4.q+'\n'; s4=s2.otimes(s3); output.value+= s4.etvo()+'\n'; s4=s0.star(); output.value += s4.etvo()+'\n'; //Script #4 (neutral feedback control) H=mmgd("(d4+g2.d7).[g3.d4]*"); //sseries([],[0,4,2,7],3,4); F=H.frac(H).frac(H); output.value += F.etvo()+'\n'; Fcaus=F.prcaus(); output.value += Fcaus.etvo()+'\n'; //check neutrality G=H.otimes(Fcaus.otimes(H).star()); output.value += 'open loop=' + H.etvo()+'\n'; output.value += 'closed loop=' + G.etvo()+'\n'; //Script #5 var eps=seps(); A=ssmatrix([[eps,eps,eps,sgd(2,0)], [sgd(0,2),eps,eps,eps], [eps,sgd(0,0),eps,eps], [eps,eps,sgd(0,3),eps]]) B= new smatrix([[sgd(0,0)],[eps],[eps],[eps]]); C= new smatrix([[eps,sgd(0,0),eps,sgd(1,0)]]); output.value=A.etvo()+'\n'; output.value+=B.etvo()+'\n'; output.value+=C.etvo()+'\n'; H=C.otimes(A.star()).otimes(B) output.value+='H='+H.etvo()+'\n'; //Script #6 (Automatica 2001) var eps=seps(); A=ssmatrix([[sgd(1,2),eps,eps], [eps,sgd(1,3),eps], [sgd(1,3),sgd(0,8),sgd(1,2)]]); B=ssmatrix([[sgd(0,0),eps],[eps,sgd(0,0)],[eps,eps]]); C=ssmatrix([[eps,eps,sgd(0,2)]]); CAs=C.otimes(A.star()); output.value='CAs='+CAs.etvo()+'\n'; H=CAs.otimes(B); output.value+='H='+H.etvo()+'\n'; var s=sseries([],[0,0],1,3); Gref=ssmatrix([[H.get(0,0).otimes(s),H.get(0,1).otimes(s)]]); output.value+='Gref='+Gref.etvo()+'\n'; Sr=Gref.lfrac(CAs).rfrac(H); output.value+='Sr='+Sr.etvo()+'\n'; Srp=Sr.prcaus(); output.value+='Sr+='+Srp.etvo()+'\n'; //Gcl=((CA*Sr)*)H Gcl=(CAs.otimes(Srp)).star().otimes(H); output.value+='Gcl='+Gcl.etvo()+'\n'; //script #7 var s=mmgd("g3.d4+g5.d7+g8.d11+g9.d13"); //spoly([3,4,5,7,8,11,9,13]) var s= s.star(); output.value='s='+s+'\n'; // default string output output.value+='s='+s.etvo()+'\n'; // etvo compatible output.value+='s.p=' + s.p +'\n'; output.value+='s.q=' + s.q + '\n'; var i; for(i=0;i