python/pp_basic.py
changeset 0 0efde00f9229
equal deleted inserted replaced
-1:000000000000 0:0efde00f9229
       
     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)