Polynômes : bonus

Décomposition d'un polynôme en somme de deux polynômes, pair et impair

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
décomposition d'un polynôme en deux polynômes, respectivement pair et impair,
qui par sommation rendent le polynôme intial
 
 
"""
def polyadd(a,b):
    """
    Addition de deux polynômes de coefficients a et b
    """
    r = a[:]      # on travaille sur une copie de a pour ne pas le modifier
    t = b[:]      # idem pour b	
    g = []        # polynôme somme
    n1 = len(r)   # ordre du premier polynôme
    n2 = len(t)   # ordre du second polynôme
    if n1 > n2:   # premier polynôme de plus haut degré que le second
        for i in range(n1-n2):
            t.append(0)
    elif n1 < n2: # second polynôme de plus haut degré que le premier
         for i in range(n2-n1):
             r.append(0)
    # r et t ont à présent la même longueur
    for i in range(len(r)):
        g.append(r[i] + t[i])
    return g  # on retourne les coefficients additionnés dans la liste g
 
def dpi(a):
    """
    décomposition d'un polynôme en deux polynômes, respectivement pair et impair,
    qui par sommation rendent le polynôme intial
 
 
    """
    p = [] # sortie polynôme pair
    i = [] # sortie polynôme impair
    n = len(a)-1
    for j in range(n+1):
        if j%2 == 0:
            p.append(a[j])
            i.append(0.)
        else:
            i.append(a[j])
            p.append(0.)      
    # autre idée :
    #p = a[0::2] # il faut ajouter des 0 ...
    #i = a[1::2] # il faut ajouter des 0 ...
    return p,i
 
#po = [1., 2., 3., 4., 5., 6., 7., 8., 9.]
po = [1.]
print(po)
p1, p2 = dpi(po)
print(p1)
print(p2)
a = polyadd(p1, p2)
print(a)