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

Private GIT Repository
j
[cours-mesi.git] / tel / TPmatlab / interpolation / TP2a / diff_div_dist.m
1 function D=diff_div_dist(X,Y)\r
2\r
3 %\r
4 %       diff_div_dist : calcul des différences divisées pour des points de supports distincts\r
5 %\r
6 % *********************************************************\r
7 %\r
8 %       D=diff_div_dist(X,Y)\r
9 %     les différences divisées sont calculées par l'algorithme \r
10 %     pyramidal donné en cours.\r
11 %\r
12 %       variables d'entrées : \r
13 %     * X : contient les valeurs x_i, pour 0 <=i<=n (deux à deux distinctes)\r
14 %     * Y : contient les valeurs f(x_i), pour 0 <=i<=n\r
15 %\r
16 %       variables de sortie\r
17 %     * D : contient les différences divisées   \r
18 %           f[x_0], f[x_0,x_1], ...., f[x_0,x_1,...,x_n]\r
19 %\r
20 %\r
21 % ************ Fonctions auxiliaires utilisées ************\r
22 %\r
23 %       aucune\r
24 %\r
25 % *********************************************************\r
26 \r
27 \r
28 \r
29 % Contrôles d'entrée\r
30 %\r
31 % nombre d'arguments\r
32 if nargin~=2\r
33    error('nombre d''arguments de la fonction incorrect');\r
34 end\r
35 % taille des deux variables \r
36 n=length(X)-1;\r
37 np=length(Y)-1;\r
38 if n~=np\r
39    error('les deux tableaux n''ont pas la même taille');\r
40 end\r
41 % vérification des éléments du support deux à deux disjoints \r
42 % (si X non formel)\r
43 if isnumeric(X)\r
44    Z=sort(X);\r
45    if min(diff(Z))==0\r
46       error('deux points du support sont égaux');\r
47    end\r
48 end\r
49 \r
50 \r
51 % Corps d'algorithme\r
52 D=Y;   \r
53 for i=1:n;\r
54    for j=n:-1:i;\r
55       D(j+1)=(D(j+1)-D(j))/(X(j+1)-X(j-i+1));\r
56    end\r
57 end\r
58 \r
59 \r
60 \r