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

Private GIT Repository
j
[cours-mesi.git] / tel / TPmatlab / interpolation / TP2f / demo_limite_diff_div.m
1 % script demo_limite_diff_div: calcul et comparaisons de différences divisées par limite formelle et dérivation\r
2 %\r
3 %\r
4 % ************ Fonctions auxiliaires utilisées ************\r
5 %  \r
6 %     diff_div\r
7 %\r
8 % *********************************************************\r
9 %\r
10 %\r
11 \r
12 % corps d'algorithme\r
13 clear all;\r
14 syms x0 x1 x2;\r
15 syms y0 y1 y2;\r
16 syms x;\r
17 f=sym('f(x)');\r
18 fp=diff(f);\r
19 fpp=diff(f,2);\r
20 y0=subs(f,x,x0);\r
21 y1=subs(f,x,x1);\r
22 y2=subs(f,x,x2);\r
23 \r
24 % calcul avec les trois valeurs distinctes\r
25 disp(' ');\r
26 disp(' ');\r
27 disp('calcul avec les trois valeurs distinctes');\r
28 disp('valeurs des trois différences divisées f[x0],f[x0,x1],f[x0,x1,x2]');\r
29 disp(' ');\r
30 D=diff_div([x0 x1 x2],[y0 y1 y2]);\r
31 pretty(D);\r
32 disp(' ');\r
33 disp(' ');\r
34 disp('appuyez sur une touche pour continuer');\r
35 pause;\r
36 \r
37 % calcul avec deux valeurs égales et une distincte \r
38 % premier calcul\r
39 disp(' ');\r
40 disp(' ');\r
41 disp('premier calcul avec deux valeurs égales et une autre distinctes (x2=x1 et x0~=x1)');\r
42 disp('valeurs des trois différences divisées f[x0],f[x0,x1],f[x0,x0,x1]');\r
43 disp(' ');\r
44 D1A=simplify(limit(D,x2,x1));\r
45 D1B=simplify(diff_div([x0 x1 x1],[y0 y1 subs(fp,x,x1)]));\r
46 disp('calcul par passage à la limite');\r
47 pretty(D1A);\r
48 disp('calcul par utilisation de diff_div');\r
49 pretty(D1B);\r
50 disp('comparaison entre les deux expressions');\r
51 disp(simplify(D1A-D1B));\r
52 disp(' ');\r
53 disp(' ');\r
54 disp('appuyez sur une touche pour continuer');\r
55 pause;\r
56 \r
57 % second calcul\r
58 disp(' ');\r
59 disp(' ');\r
60 disp('second calcul avec deux valeurs égales et une autre distinctes (x0=x1 et x2~=x1)');\r
61 disp('valeurs des trois différences divisées f[x0],f[x0,x0],f[x0,x0,x2]');\r
62 disp(' ');\r
63 D1C=simplify(limit(D,x1,x0));\r
64 D1D=simplify(diff_div([x0 x0 x2],[y0 subs(fp,x,x0) y2]));\r
65 disp('calcul par passage à la limite');\r
66 pretty(D1C);\r
67 disp('calcul par utilisation de diff_div');\r
68 pretty(D1D);\r
69 disp('comparaison entre les deux expressions');\r
70 disp(simplify(D1C-D1D));\r
71 disp(' ');\r
72 disp(' ');\r
73 disp('appuyez sur une touche pour continuer');\r
74 pause;\r
75 \r
76 % calcul avec les trois valeurs égales \r
77 disp(' ');\r
78 disp(' ');\r
79 disp('calcul avec les valeurs égales  (x0=x1=x2)');\r
80 disp('valeurs des trois différences divisées f[x0],f[x0,x0],f[x0,x0,x0]');\r
81 disp(' ');\r
82 D2A=simplify(limit(limit(D,x2,x1),x1,x0));\r
83 D2B=simplify(diff_div([x0 x0 x0],[y0 subs(fp,x,x0) subs(fpp,x,x0)]));\r
84 disp('calcul par passage à la limite');\r
85 pretty(D2A);\r
86 disp('calcul par utilisation de diff_div');\r
87 pretty(D2B);\r
88 disp('comparaison entre les deux expressions');\r
89 disp(simplify(D2A-D2B));\r
90 disp(' ');\r
91 disp(' ');\r
92 disp('appuyez sur une touche pour continuer');\r
93 pause;\r
94 \r
95 % un calcul de dérivée \r
96 disp(' ');\r
97 disp(' ');\r
98 disp('calcul de la derivee de F : x-> f[x0,x1,x]');\r
99 disp(' ');\r
100 dodo=diff_div([x0 x1 x],[y0 y1 f]);\r
101 F=dodo(3);\r
102 D3A=simplify(diff(F,x));\r
103 dudu=diff_div([x0 x1 x x],[y0 y1 f fp]);\r
104 D3B=simplify(dudu(4));\r
105 disp('expression de F''(x)');\r
106 pretty(D3A);\r
107 disp('appuyez sur une touche pour continuer');\r
108 pause;\r
109 disp('expression de f[x0,x1,x,x]');\r
110 pretty(D3B);\r
111 disp(' ');\r
112 disp('comparaison entre les deux expressions');\r
113 disp(simplify(D3A-D3B));\r
114 disp(' ');\r
115 disp(' ');\r
116 disp('appuyez sur une touche pour continuer');\r
117 pause;\r
118 \r
119 % dernier calcul : erreur !! \r
120 disp('essai de calcul de f[x0],f[x0,x1],f[x0,x1,x1] par substitution maladroite');\r
121 pretty(subs(D,x2,x1));