python/cl.py
changeset 0 0efde00f9229
equal deleted inserted replaced
-1:000000000000 0:0efde00f9229
       
     1 #!/usr/bin/python
       
     2 # 11.6
       
     3 
       
     4 from zpowk import zpowk
       
     5 from polyfuncs import polmul, poladd
       
     6 from tfvar import tfvar
       
     7 
       
     8 def cl(A,dA,B,dB,C,dC,k,S,dS,R,dR,int1):
       
     9     """
       
    10     int>=1 means integrated noise and control law:
       
    11     delta u = - (S/R)y
       
    12     Evaluates the closed loop transfer function and 
       
    13     variances of input and output
       
    14     """
       
    15     
       
    16     zk, dzk = zpowk(k)
       
    17     BS, dBS = polmul(B,dB,S,dS)
       
    18     zBS, dzBS = polmul(zk,dzk,BS,dBS)
       
    19     RA, dRA = polmul(R,dR,A,dA)
       
    20     
       
    21     if int1>=1:
       
    22         RA, dRA = polmul(RA, dRA, [1, -1], 1)
       
    23     D, dD = poladd(RA, dRA, zBS, dzBS)
       
    24     D = D.squeeze()
       
    25     Ny, dNy = polmul(C,dC,R,dR)
       
    26     Nu, dNu = polmul(C,dC,S,dS)
       
    27 
       
    28     
       
    29     Nu, dNu, Du, dDu, uvar = tfvar(Nu, dNu, D, dD)
       
    30     Ny, dNy, Dy, dDy, yvar = tfvar(Ny, dNy, D, dD)
       
    31 
       
    32     return Nu, dNu, Du, dDu, Ny, dNy, Dy, dDy, yvar, uvar