1 % script demo_test_compar_methode : comparaison des différentes méthodes pour calculer un polynôme d'interpolation
\r
4 % Ce script permet de comparer, en terme d'évaluation numérique et graphique
\r
5 % le polynôme interpolateur p_n d'une fonction f sur le support (x_i) où, pour 0<=i<=n,
\r
6 % on a x_i=a+i*(b-a)/n, avec a, b, n et f donnée, en fonction des trois méthodes :
\r
7 % a) calcul en utilisant la forme de Newton et les différences divisées,
\r
8 % b) calcul à partir des polynômes de Lagranges l_i.
\r
9 % c) calcul à partir de la forme canonique de p_n
\r
12 % ************ Fonctions auxiliaires utilisées ************
\r
14 % saisiefonction, diff_div_dist, eval_horner,
\r
15 % newton_cano, poly_eval_lagr
\r
17 % *********************************************************
\r
20 a=input('Entrez l''abscisse minimale a : ');
\r
21 b=input('Entrez l''abscisse maximale b : ');
\r
22 pgra=input('Entrez le nombre de points pour le graphique : ');
\r
24 n=input('Entrez l''entier n positif (égal au nombre de points oté de un) : ');
\r
27 xgra=a:(b-a)/pgra:b;
\r
30 if strcmp(choixpoint,'o')
\r
31 choixpoint=input('Afficher le support ? entrez o ou n : ','s');
\r
35 choix=input('Conserver le graphique par calcul à partir de la forme canonique ? entrez o ou n : ','s');
\r
36 if strcmp(choix,'n')
\r
40 choix=input('Conserver le graphique par calcul à partir des polynômes de Lagrange ? entrez o ou n : ','s');
\r
41 if strcmp(choix,'n')
\r
51 D=diff_div_dist(X,Y);
\r
52 ygranewton=eval_horner(xgra,X(1:end-1),D);
\r
53 ygralagrange=poly_eval_lagr(xgra,X,Y);
\r
54 P=newton_cano(D,X(1:end-1));
\r
55 ygracanonique=polyval(P,xgra);
\r
58 if (strcmp(choixpoint,'o'))
\r
61 plot(X,Y,'go',xgra,ygra,xgra,ygranewton,xgra,ygralagrange,xgra,ygracanonique);
\r
62 legend('Points du support','Fonction exacte','Newton','Lagrange','Canonique',0);
\r
64 plot(X,Y,'go',xgra,ygra,xgra,ygranewton,xgra,ygralagrange);
\r
65 legend('Points du support','Fonction exacte','Newton','Lagrange',0);
\r
67 plot(X,Y,'go',xgra,ygra,xgra,ygranewton);
\r
68 legend('Points du support','Fonction exacte','Newton',0);
\r
73 plot(xgra,ygra,xgra,ygranewton,xgra,ygralagrange,xgra,ygracanonique);
\r
74 legend('Fonction exacte','Newton','Lagrange','Canonique',0);
\r
76 plot(xgra,ygra,xgra,ygranewton,xgra,ygralagrange);
\r
77 legend('Fonction exacte','Newton','Lagrange',0);
\r
79 plot(xgra,ygra,xgra,ygranewton);
\r
80 legend('Fonction exacte','Newton',0);
\r
84 title(['interpolation de la fonction ',formula(f),' avec ',int2str(n+1),' points']);
\r
86 title(['interpolation de la fonction ',f,' avec ',int2str(n+1),' points']);
\r
89 n=input('pour continuer, entrez un nombre n positif (pour arrêter, le choisir négatif) : ');
\r