Documente Academic
Documente Profesional
Documente Cultură
TP n1 Polynmes d'interpolation
Printemps 2004
Introduction :
La premire partie de l'unit de valeur MT44 est ltude de linterpolation polynomiale. Pour tudier ceci, nous nous servons du logiciel Matlab sous windows. Au cours de ce Tp nous serons amens programmer les diffrentes mthodes dvaluation dun polynme en un point.
n est un entier naturel reprsentant le nombre de points. a est le vecteur des n+1 rels reprsentant le coefficient dominant de pn. c est un vecteur de n rels reprsentant les centres de lcriture de Newton. t est le point dvaluation de la fonction p. val sera la valeur relle retourne par lalgorithme, cest dire lvaluation de p en t.
function val=evaluation1(n,a,c,t) %Evaluation d'une fonction polynme en un point t somme=0; for i=1:n+1 produit=1; for j=1:i-1 produit=produit*(t-c(j)); end somme=somme+a(i)*produit; end val=somme; end
function t=tempsExecEvaluation2(n,a,c,t) tic ; for j=0:10000 evaluation2(n,a,c,t) ; end t=toc ; end Ici on teste les deux fonctions pour 10000 itrations de la mme valuation. Les rsultats obtenus avec les mmes paramtres sont trs parlants, mme pour un si petit calcul (10000 valuations sur un support trois points) . Evaluation1 : Evaluation2 : 1.5120 seconde 0.8210 seconde
Version matricielle de evaluation(), qui partir d'un vecteur colonne de rels T produit le vecteur colonne des images p(T).
n est un entier naturel reprsentant le nombre de points. a est le vecteur des n+1 rels reprsentant le coefficient dominant de pn. c est un vecteur de n rels reprsentant les centres de lcriture de Newton. t est la matrice des points d'valuation de la fonction p. function val=eval3(n,a,c,t) %evaluation version matricielle
d=size(t); // t est une matrice ligne d=d(1,1); // d est le nombre d'elements du vecteur des points d'evaluation du polynme UN=ones(d,1); // on cree une matrice colonne de 1 de meme taille que t C=UN*c; // initialisation d'une matrice carre somme=zeros(d,1); //initialisation de la somme for i=1:n+1 produit=ones(d,1); //initialisation du produit for j=1:i-1 //Application de la mthode de Newton produit=produit.*(t-C(:,j)); end somme=somme+a(i)*produit; end val=somme; end
0x 1 2
Faire pour i " n jusqu' 0 t .i,0/ 9 f ! xi " fin de faire faire pour k " 1 jusqu' n faire pour i " 0 jusqu' n-k t .i : 1, k & 1/ & t .i, k & 1/ t .i, k / 9 x .i : k / & x .i / fin de faire fin de faire fin
function tableau=diffdiv(x,y)
La fonction va renvoyer un tableau et prends en argument deux vecteurs de mme taille. Il faut crer une matrice nulle d'une taille gale aux nombres de points du support. Size(x) renvoie le nombre de ligne et le nombre de colonne du vecteur. La taille maximum de la matrice correspond au nombre de colonne, soit s(1,2). On rempli la premire colonne de la matrice avec les ordonnes des points de support Contrairement lalgorithme fourni en cours, linitialisation du tableau n'est faite lenvers (pour i " n jusqu' 0). Cela na aucune importance. La matrice commence 1 et non pas 0 car le premier indice de tableau de Matlab est 1 et non 0. k & 1 ; 1 dans l'algo, d'o k de 2 d (taille maximale de la matrice). De la mme manire on dcale de 1, donc "i " 0 jusqu' n-k" devient " i " 1 jusqu' n-k+1
for k=2:d
for i=1:d-k+1
tableau ! i : 1, k & 1" & tableau ! i, k & 1" Cette formule ne varie que dans le ; dnominateur, puisque qu'elle doit x ! i : k & 1" & x ! i " commencer par x .1/ & x . 0/ ce qui
implique sous matlab x . 2/ & x .1/ .
Conclusion : Ce Tp nous a permis de nous familiariser avec le logiciel Matlab dont la prise en main ncessite quelques rudiments de programmation, mais est tout de mme relativement ais. Nous avons pu revoir les diffrentes mthodes d'valuation de polynme et de constater leurs vitesses d'execution selon le code et l'algorithme utilis.