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

Private GIT Repository
j
[cours-mesi.git] / tel / TPmatlab / interpolation / TP2d / poly_lagrange_sca.m
1 function z=poly_lagrange_sca(i,t,X)\r
2 \r
3 % poly_lagrange_sca : calcul du i-ième polynôme de Lagrange en t (scalaire)\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 %                   ((x-x_(i+1))/(x_i-x_(i+1)))...\r
11 %                         ((x-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 réel t 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_i(t)\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 y=X(1:i);\r
48 y(i+1:n)=X(i+2:n+1);\r
49 Auxi=X(i+1)-X(1:i);\r
50 Auxi(i+1:n)=X(i+1)-X(i+2:n+1);\r
51 z=prod((t-y)./Auxi);\r