|
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 polsplit2 |
|
9 from zpowk import zpowk |
|
10 from xdync import xdync |
|
11 |
|
12 def pp_basic(B, A, k, phi): |
|
13 # Setting up and solving Aryabhatta identity |
|
14 Ag, Ab = polsplit2(A) |
|
15 dAb = len(Ab) - 1 |
|
16 Bg, Bb = polsplit2(B) |
|
17 dBb = len(Bb) - 1 |
|
18 |
|
19 zk, dzk = zpowk(k) |
|
20 |
|
21 N, dN = polmul(Bb, dBb, zk, dzk) |
|
22 dphi = len(phi)-1 |
|
23 |
|
24 S1, dS1, R1, dR1 = xdync(N, dN, Ab, dAb, phi, dphi)[:4] |
|
25 |
|
26 # Determination of control law |
|
27 R1 = sp.squeeze(R1) |
|
28 S1 = sp.squeeze(S1) |
|
29 Rc = sp.convolve(Bg, R1) |
|
30 Sc = sp.convolve(Ag, S1) |
|
31 Tc = Ag |
|
32 gamm = phi.sum()/Bb.sum() |
|
33 return Rc, Sc, Tc, gamm |
|
34 |
|
35 if __name__ == "__main__": |
|
36 Ts = 1 |
|
37 B = 0.63 |
|
38 A = sp.array([1, -0.37]) |
|
39 k = 1 |
|
40 if k<=0: |
|
41 k = 1 |
|
42 |
|
43 zk, dzk = zpowk(k) |
|
44 |
|
45 phi = sp.array([1, -0.5]) |
|
46 |
|
47 print pp_basic(B, A, k, phi) |