====== Polynômes : boucle for, fonction mathématique ======
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
écriture d'un programme pour évaluer
des polynomes
"""
from math import *
def polyeval(x,a):
"""
Fonction s'occupant uniquement de l'évaluation du polynome fonction de x
avec les coefficients dans la liste a
"""
n = len(a)-1
p = 0. # initialisation
for i in range(n+1):
p = p + a[i] * x**i #calcul et addition de chacun des termes
return p
# utilisation dans une structure de répétition (boucle for)
# en combinaison avec une autre fonction mathématique (sinus)
varcoef = [1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]
for j in range(0,11,1):
vax = float(j) * 0.1
rep = sin(polyeval(vax,varcoef))
print(vax,rep)
S'il y a beaucoup d'abscisses pour lesquelles il faut évaluer le polynôme, ces calculs sont nombreux !
**Mais au fait, combien d'opérations élémentaires (addition, multiplication) faut-il effectuer pour chaque évaluation d'un polynôme de degré n**
Cela augmente "beaucoup plus vite" que n. En fait le nombre de multiplications de la fonction polyeval (les opérations les plus fréquentes et les plus lentes à réaliser) se comporte comme **n2** !
Il y a sûrement moyen de faire mieux, d'économiser des opérations. Essayez sur un exemple, et trouvez une méthode systématique. On doit pouvoir arriver à un nombre de multiplications proportionnel à n !
[[polynomes-6|Solution à la page suivante !]]