|
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 |