====== Polynômes : graphes de fonctions polynomiales ======
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
écriture d'un programme pour évaluer
des polynomes
"""
from math import *
from pylab import * # librairies de graphiques (matplotlib)
def polyeval(x,a):
"""
application de l'agorithme de Horner
cf. http://fr.wikipedia.org/wiki/M%C3%A9thode_de_Ruffini-Horner
"""
n = len(a)-1 # n = ordre du polynome
p = 0.
for i in range(n,-1,-1):
p = p*x + a[i]
return p
def polyscal(s,a):
"""
polynôme multiplié par un scalaire s
"""
b = []
for coef in a:
b.append(coef*s)
return b # on retourne les coefficients multipliés par s
def polyadd(a,b):
"""
Addition de deux polynomes 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 = [] # polynome somme
n1 = len(r) # ordre du premier polynome
n2 = len(t) # ordre du second polynome
if n1 > n2: # premier polynome de plus haut degré que le second
for i in range (n1-n2):
t.append(0)
elif n1 < n2: # second polynome 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
# différents tests :
absc = []
ordo = []
coef = [0, 9, 0, -120, 0, 432, 0, -576, 0, 256] # un polynome un peu particulier
xa = -1.04
while xa < 1.04:
absc.append(xa)
ordo.append(polyeval(xa,coef))
xa = xa + 0.01
plot(absc,ordo)
show()
Il s'agit à présent de créer d'autres fonctionnalités sur les polynômes !
Ce serait utile pour créer un graphe d'une famille de fonctions polynomiales (comme des polynômes orthogonaux).
[[polynomes-9|Regardez cet exemple simple de graphe multiple !]]