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