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

Private GIT Repository
j
[cours-mesi.git] / tel / TPmatlab / interpolation / TP2f / demo_trace_diff_div.m
1 % demo_trace_diff_div : script tracé de polynômes d'interpolation pour des supports quelconques.\r
2 %\r
3 %\r
4 % ************ Fonctions auxiliaires utilisées ************\r
5 %  \r
6 %  diff_div, eval_horner\r
7 %\r
8 % *********************************************************\r
9 \r
10 clear all;\r
11 choix=input('entrer les points à la main (taper m) ou en vecteur (taper v) : ','s');\r
12 if strcmp(choix,'m')\r
13    n=input('Entrez l''entier n strictement positif (n-1 est le nombre total du point du support, en comptant les répétitions) : ');\r
14    auxix=input('Entrez le point du support numéro 0 : ');\r
15    auxiy=input('Entrez la valeur de la fonction en ce point : ');\r
16    Xb(1)=auxix;\r
17    Yb(1)=auxiy;\r
18    X=zeros(1,n+1);\r
19    Y=zeros(1,n+1);\r
20    X(1)=auxix;\r
21    Y(1)=auxiy;\r
22    r=auxix;           \r
23    k=0;\r
24    for i=1:n\r
25       auxix=input(['Entrez le point du support numéro ',int2str(i),' : ']);\r
26       X(i+1)=auxix;\r
27       if (X(i+1))~=r\r
28          r=X(i+1);\r
29          k=0; \r
30          Xb=[Xb auxix]; \r
31       else\r
32          k=k+1;\r
33       end\r
34       if (k==0)\r
35          auxiy=input('Entrez la valeur de la fonction en ce point : ');\r
36          Y(i+1)=auxiy;\r
37          Yb=[Yb auxiy]; \r
38       else\r
39          Y(i+1)=input(['Entrez la valeur de la dérivée ',int2str(k),...\r
40                '-ième de la fonction en ce point : ']);\r
41       end\r
42    end\r
43 else\r
44    X=input('Entrez le vecteur des abscisses : ');\r
45    Y=input('Entrez le vecteur des ordonnées : ');\r
46    n=length(X)-1;\r
47    Xb(1)=X(1);\r
48    Yb(1)=Y(1);\r
49    r=X(1);           \r
50    for i=1:n\r
51       auxix=X(i+1);\r
52       if (auxix)~=r\r
53          r=auxix;\r
54          Xb=[Xb auxix]; \r
55          Yb=[Yb Y(i+1)]; \r
56       end\r
57    end\r
58 end\r
59 pgra=input('Entrez le nombre de points pour le graphique : ');\r
60 a=X(1);\r
61 b=X(n+1);\r
62 xgra=a:(b-a)/pgra:b;\r
63 D=diff_div(X,Y);\r
64 ygra=eval_horner(xgra,X(1:end-1),D);\r
65 hold on;\r
66 plot(Xb,Yb,'go',xgra,ygra);\r
67 legend('Points du support','polynôme interpolateur');\r
68 title(['interpolation avec ',int2str(n+1),' points']);\r
69 hold off;\r
70 \r
71 \r
72 \r
73 \r