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

Private GIT Repository
j
[cours-mesi.git] / tel / TPmatlab / interpolation / TP2f / val_derivee_multiple.m
1 function [alpha,valfder]=val_derivee_multiple(i,X,Y)\r
2 \r
3 \r
4 %       val_derivee_multiple : sortie des valeurs des dérivées successives pour un support quelconque\r
5 %\r
6 % *********************************************************\r
7 %\r
8 %       [alpha,valfder]=val_derivee_multiple(i,X,Y)\r
9 %     sorties des valeurs des dérivées successives (définies dans Y)      \r
10 %     pour un support à n+1 points quelconque (ordonnée) stocké dans X,\r
11 %     pour un élément x_i de ce support.\r
12 %\r
13 %\r
14 %       variables d'entrées : \r
15 %     * i : entier compris entre 0 et n\r
16 %     * X : contient les valeurs x_j, pour 0 <=j<=n (dans l'ordre croissant)\r
17 %     * Y : contient les valeurs f^(r)(x_j), pour 0 <=j<=n, de telle sorte que :\r
18 %             si x_k est multiple avec x_{k-1}~=x_k=x_{k+1}=...=x_{k+r}~=x_{k+r+1} alors\r
19 %                y_k=f(x_k), y_{k+1}=f'(x_k), ..., y_{k+r}=f^(r)(x_k).\r
20 %\r
21 %       variables de sortie\r
22 %     *  alpha : nombre d'éléments du n+1 uplet (x_0,x_1,...,x_n) égaux à x_i.     \r
23 %     *  valfder : vecteur ligne de longueur alpha tel que :\r
24 %                 pour tout l dans {0,...,alpha-1}; valfder(l+1)=f^{l}(x_i).\r
25\r
26\r
27 % ************ Fonctions auxiliaires utilisées ************\r
28 %\r
29 %       aucune\r
30 %\r
31 % *********************************************************\r
32 %\r
33 \r
34 \r
35 % Contrôles d'entrée\r
36 %\r
37 % nombre d'arguments\r
38 if nargin~=3\r
39    error('nombre d''arguments de la fonction incorrect');\r
40 end\r
41 % taille des deux variables \r
42 n=length(X)-1;\r
43 np=length(Y)-1;\r
44 if n~=np\r
45    error('les deux tableaux n''ont pas la même taille');\r
46 end\r
47 % vérification de l'ordre croissant des x_i \r
48 % (si X non formel)\r
49 if isnumeric(X)\r
50    if max(abs(sort(X)-X))~=0\r
51       error('support non ordonné');\r
52    end\r
53 end\r
54 % vérification de l'appartenance de i à {0,...,n}\r
55 % vérification de l'ordre croissant des x_i \r
56 if ~((0<=i) & (i<=n)) \r
57    error('le premier argument n''appartient pas à {0,...,n}');\r
58 end\r
59 \r
60 \r
61 % Corps d'algorithme\r
62 k=find(X==X(i+1));\r
63 alpha=length(k);\r
64 valfder=Y(k);