]> AND Private Git Repository - cours-mesi.git/blob - tel/TPmatlab/interpolation/TP2c/etude_support.m
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
quelques typos
[cours-mesi.git] / tel / TPmatlab / interpolation / TP2c / etude_support.m
1 function etude_support(a,b,n)\r
2 % compare l'effet sur la qualité de l'interpolation\r
3 % des points de Tchebychev et\r
4 % de points régulièrement répartis dans [a,b].\r
5\r
6 % variables d'entrée\r
7 % n est un entier naturel\r
8 % tel que x0,...,xn sont les points d'interpolation \r
9 % choisis dans [a,b] selon les deux variantes à comparer.\r
10\r
11 % variables de sortie\r
12 % On visualise; on pourra capter l'image produite\r
13 % et éventuellement renvoyer son handle.\r
14\r
15\r
16 % ************ Fonctions auxiliaires utilisées ***************\r
17 %\r
18 % diff_div_dist, eval_horner\r
19 %\r
20 % *********************************************************\r
21 \r
22 % Paramètres modifiables\r
23 format long e;\r
24 nmax=19; % nb de points d'interpolation\r
25 N=100; % détermine la taille des vecteurs à représenter\r
26 pas=(b-a)/N;\r
27 % Contrôles d'entrée\r
28 \r
29 % nombre d'arguments\r
30 if nargin~=3\r
31     error('Nombre des arguments incorrects');\r
32 end\r
33 \r
34 % autres tests éventuels\r
35 if n>nmax\r
36     error('Modifiez le paramètre nmax en tete de fichier')\r
37 end\r
38 if b<=a\r
39     error('Choisissez un intervalle conventionnel')\r
40 end\r
41    \r
42 % Corps d'algorithme\r
43 \r
44 % préparation des deux familles de points de support\r
45 i=0:n;\r
46 % points régulièrement répartis\r
47 x1=a+(b-a)/n.*i;\r
48 % points de Tchebychev\r
49 x2=(b-a)/2*cos(pi/2*(2.*i+1)/(n+1))+(b+a)/2;\r
50 \r
51 % détermination des images d'un vecteur x\r
52 % par la fonction proposée;\r
53 % on pourrait rajouter un champ de saisie\r
54 % de la fonction à interpoler.\r
55 X=a:pas:b;\r
56 Y=exp(X);\r
57 \r
58 % détermination des polynomes d'interpolation\r
59 % et des images du vecteur x obtenues par eux.\r
60 y1=exp(x1);y2=exp(x2);\r
61 d1=diff_div_dist(x1,y1);d2=diff_div_dist(x2,y2);\r
62 Y1=eval_horner(X,x1(1:n),d1);\r
63 Y2=eval_horner(X,x2(1:n),d2);\r
64 \r
65 % calcul des écarts entre fonction exacte\r
66 % et polynomes d'interpolation\r
67 E1=abs(Y-Y1);E2=abs(Y-Y2);\r
68 \r
69 % calibrage des images\r
70 maxy=max(max(E1),max(E2));\r
71 bordx=2*(b-a)/10;\r
72 lim=[a-bordx b+bordx 0 1.1*maxy];\r
73 \r
74 clf;\r
75 % représentation de E1 et E2\r
76 subplot(3,1,1)\r
77 plot(X,E1,'b:');\r
78 axis(lim);\r
79 title(['Erreurs d''interpolation à ' num2str(n+1) ' points pour exponentielle']);\r
80 legend('Cas de points régulièrement répartis',0);\r
81 \r
82 subplot(3,1,2)\r
83 plot(X,E2,'r-');\r
84 axis(lim);\r
85 legend('Cas de points de Tchebychev',0);\r
86 \r
87 subplot(3,1,3)\r
88 plot(X,E1,'b:');\r
89 axis(lim);\r
90 legend('Erreurs comparées',0);\r
91 hold on;\r
92 plot(X,E2,'r-');\r
93 axis(lim);\r
94 \r
95 \r
96 \r
97 \r
98 \r
99 \r
100 \r
101 \r
102 \r
103 \r
104 \r
105 % sortie des résultats\r
106 \r
107 \r
108 \r
109 % fin de fonction()\r
110 \r