python/cl.py
changeset 0 0efde00f9229
--- /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