|
1 #!/usr/bin/python |
|
2 # 9.8 |
|
3 import os, sys |
|
4 sys.path += [os.getcwdu() + os.sep + ".." + os.sep + "python"] |
|
5 |
|
6 import scipy as sp |
|
7 from polyfuncs import polmul |
|
8 from polyfuncs import polsplit3 |
|
9 from zpowk import zpowk |
|
10 from xdync import xdync |
|
11 |
|
12 def pp_im(B, A, k, phi, Delta): |
|
13 Delta = sp.atleast_1d(Delta) |
|
14 # Setting up and solving Aryabhatta identity |
|
15 Ag, Ab = polsplit3(A) |
|
16 dAb = len(Ab) - 1 |
|
17 Bg, Bb = polsplit3(B) |
|
18 dBb = len(Bb) - 1 |
|
19 |
|
20 zk, dzk = zpowk(k) |
|
21 |
|
22 N, dN = polmul(Bb, dBb, zk, dzk) |
|
23 dDelta = len(Delta)-1 |
|
24 D, dD = polmul(Ab, dAb, Delta, dDelta) |
|
25 dphi = len(phi)-1 |
|
26 |
|
27 S1, dS1, R1, dR1 = xdync(N, dN, D, dD, phi, dphi)[:4] |
|
28 |
|
29 # Determination of control law |
|
30 R1 = sp.squeeze(R1) |
|
31 S1 = sp.squeeze(S1) |
|
32 Rc = sp.convolve(Bg, sp.convolve(R1, Delta)) |
|
33 Sc = sp.convolve(Ag, S1) |
|
34 Tc = Ag |
|
35 gamm = phi.sum()/Bb.sum() |
|
36 return Rc, Sc, Tc, gamm |
|
37 |
|
38 if __name__ == "__main__": |
|
39 Ts = 1 |
|
40 B = 0.63 |
|
41 A = sp.array([1, -0.37]) |
|
42 k = int(raw_input('Enter the delay as an integer: ')) |
|
43 |
|
44 if k<=0: |
|
45 k = 1 |
|
46 |
|
47 zk, dzk = zpowk(k) |
|
48 |
|
49 phi = sp.array([1, -0.5]) |
|
50 delta = 1 |
|
51 |
|
52 print pp_im(B, A, k, phi, delta) |