diff -r 000000000000 -r 0efde00f9229 python/cl.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/python/cl.py Fri May 27 14:24:59 2011 +0530 @@ -0,0 +1,32 @@ +#!/usr/bin/python +# 11.6 + +from zpowk import zpowk +from polyfuncs import polmul, poladd +from tfvar import tfvar + +def cl(A,dA,B,dB,C,dC,k,S,dS,R,dR,int1): + """ + int>=1 means integrated noise and control law: + delta u = - (S/R)y + Evaluates the closed loop transfer function and + variances of input and output + """ + + zk, dzk = zpowk(k) + BS, dBS = polmul(B,dB,S,dS) + zBS, dzBS = polmul(zk,dzk,BS,dBS) + RA, dRA = polmul(R,dR,A,dA) + + if int1>=1: + RA, dRA = polmul(RA, dRA, [1, -1], 1) + D, dD = poladd(RA, dRA, zBS, dzBS) + D = D.squeeze() + Ny, dNy = polmul(C,dC,R,dR) + Nu, dNu = polmul(C,dC,S,dS) + + + Nu, dNu, Du, dDu, uvar = tfvar(Nu, dNu, D, dD) + Ny, dNy, Dy, dDy, yvar = tfvar(Ny, dNy, D, dD) + + return Nu, dNu, Du, dDu, Ny, dNy, Dy, dDy, yvar, uvar