Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
j
[cours-mesi.git] / tel / TPmatlab / interpolation / TP2d / poly_lagrange.m
1 function Z=poly_lagrange(i,T,X)\r
2 \r
3 % poly_lagrange : calcul du i-ième polynôme de Lagrange en T (vectoriel)\r
4 %\r
5 % *********************************************************\r
6 %\r
7 %  z=poly_lagrange_sca(i,T,X)\r
8 %     Calcul de l_i(t) défini par \r
9 %          l_i(T)=((T-x_0)/(x_i-x_0))...((T-x_(i-1))/(x_i-x_(i-1)))\r
10 %                   ((T-x_(i+1))/(x_i-x_(i+1)))...\r
11 %                         ((T-x_n)/(x_i-x_n))\r
12 %\r
13 %       variables d'entrées : \r
14 %     * i : contient l'indice i, compris entre 0 et n\r
15 %     * T : contient le tableau ligne des réels où on évalue l_i\r
16 %     * X : contient les centres x_i, pour 0<=i<=n (deux à deux distincts)\r
17 %\r
18 %       variables de sortie\r
19 %     * Z : contient l'image du tableau T par l_i (tableau ligne)\r
20\r
21\r
22 % ************ Fonctions auxiliaires utilisées ************\r
23 %\r
24 %       aucune\r
25 %\r
26 % *********************************************************\r
27 %\r
28 \r
29 \r
30 % Contrôles d'entrée\r
31 %\r
32 % nombre d'arguments\r
33 if nargin~=3\r
34    error('nombre d''arguments de la fonction incorrect');\r
35 end\r
36 n=length(X)-1;\r
37 if (i<0) | (i>n)\r
38    error('i n''appartient pas à l''ensemble {0,...,n}')\r
39 end\r
40 % vérification des éléments du support deux à deux disjoints \r
41 Z=sort(X);\r
42 if min(diff(Z))==0\r
43    error('deux points du support sont égaux');\r
44 end\r
45 \r
46 % Corps d'algorithme\r
47 q=length(T);\r
48 y=X(1:i);\r
49 y(i+1:n)=X(i+2:n+1);\r
50 Auxi=X(i+1)-X(1:i);\r
51 Auxi(i+1:n)=X(i+1)-X(i+2:n+1);\r
52 B=ones(n,1)*T-y'*ones(1,q);\r
53 Z=prod(((1./Auxi)'*ones(1,q)).*B,1);\r