python/clcoef.py
changeset 0 0efde00f9229
equal deleted inserted replaced
-1:000000000000 0:0efde00f9229
       
     1 #!/usr/bin/python
       
     2 
       
     3 import pylab as pl
       
     4 from polyfuncs import polsize
       
     5 
       
     6 def clcoef(Q, degQ):
       
     7     """Function to clear zero leading coefficient matrices
       
     8     of a Polynomial Matrix"""
       
     9     rQ, cQ = polsize(Q, degQ)
       
    10     
       
    11     if pl.allclose(Q, pl.zeros_like(Q)):
       
    12         P = pl.zeros((rQ,cQ))
       
    13         degP = 0
       
    14     else:
       
    15         P, degP = Q, degQ
       
    16         rP, cP = rQ, cQ
       
    17         j = degP
       
    18         while j>=0:
       
    19             if pl.norm(P[:, -cP:], pl.inf) < 1e-8 *pl.norm(P, pl.inf):
       
    20                 P = P[:, :j*cP]
       
    21                 degP = degP-1
       
    22             else:
       
    23                 j=0
       
    24             j -= 1
       
    25     return P, degP
       
    26 
       
    27 if __name__== "__main__":
       
    28     s = """P = pl.array([[1, 2, 3, 4, 0, 0, 0, 0],
       
    29            [9, 10, 11, 12, 0, 0, 0, 0],
       
    30            [5, 6, 7, 8, 0, 0, 0, 0]])"""
       
    31     t = """degP = 3"""
       
    32     print s, t
       
    33     exec(s)
       
    34     exec(t)
       
    35     
       
    36     print clcoef(P, degP)