1 function D=diff_div(X,Y)
\r
4 % diff_div : calcul des différences divisées pour des points de supports quelconques
\r
6 % *********************************************************
\r
9 % les différences divisées sont calculées par l'algorithme
\r
10 % pyramidal donné en TD.
\r
12 % variables d'entrées :
\r
13 % * X : contient les valeurs x_i, pour 0 <=i<=n (dans l'ordre croissant)
\r
14 % * Y : contient les valeurs f^(r)(x_i), pour 0 <=i<=n, de telle sorte que :
\r
15 % si x_k est multiple avec x_{k-1}~=x_k=x_{k+1}=...=x_{k+r}~=x_{k+r+1} alors
\r
16 % y_k=f(x_k), y_{k+1}=f'(x_k), ..., y_{k+r}=f^(r)(x_k).
\r
18 % variables de sortie
\r
19 % * D : contient les différences divisées (généralisée à support quelconque)
\r
20 % f[x_0], f[x_0,x_1], ...., f[x_0,x_1,...,x_n]
\r
24 % ************ Fonctions auxiliaires utilisées ************
\r
26 % val_derivee_multiple
\r
28 % *********************************************************
\r
31 % Contrôles d'entrée
\r
33 % nombre d'arguments
\r
35 error('nombre d''arguments de la fonction incorrect');
\r
37 % taille des deux variables
\r
41 error('les deux tableaux n''ont pas la même taille');
\r
43 % vérification de l'ordre croissant des x_i
\r
46 if max(abs(sort(X)-X))~=0
\r
47 error('support non ordonné');
\r
51 % Corps d'algorithme
\r
54 [alpha,valfder]=val_derivee_multiple(i,X,Y);
\r
55 D(i+1:i+alpha)=valfder(1)*ones(1,alpha);
\r
64 [alpha,valfder]=val_derivee_multiple(j-i,X,Y);
\r
65 D(j+1)=(valfder(i+1))/factoi;
\r
67 D(j+1)=(D(j+1)-D(j))/(dx);
\r