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