Polynômes : boucle for, fonction mathématique
- poly05-math-sinus.py
#!/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 !