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

Private GIT Repository
j
[cours-mesi.git] / tel / TPmatlab / interpolation / TP2a / eval_horner.m
1 function Z=eval_horner(T,C,D)\r
2\r
3 %\r
4 % eval_horner : évaluation vectorielle d'un polynôme à partir de sa forme de Newton.\r
5 %\r
6 % *********************************************************\r
7 %\r
8 %  Z=eval_horner(T,C,D)\r
9 %     L'évaluation est faite par l'algorithme de Hörner donné en cours,\r
10 %     Elle permet de calculer :\r
11 %         p_n(T)=d_0+d_1(T-c_1)+d_2(T-c_1)(T-c_2)+...+d_n(T-c_1)...(T-c_n)\r
12 %\r
13 %       variables d'entrées : \r
14 %     * T : contient le tableau rectangulaire des réels où est évalué p_n\r
15 %     * C : contient les centres c_i, pour 1 <=i<=n\r
16 %     * D : contient les coefficients d_i, pour 0<=i<=n         \r
17 %\r
18 %       variables de sortie\r
19 %     * Z : contient le tableau rectangulaire des images de T par p_n   \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 % Contrôles d'entrée\r
30 %\r
31 % nombre d'arguments\r
32 if nargin~=3\r
33    error('nombre d''arguments de la fonction incorrect');\r
34 end\r
35 % taille des variables C et D\r
36 n=length(C);\r
37 np=length(D)-1;\r
38 if n~=np\r
39    error('les deux tableaux n''ont pas la taille adéquate');\r
40 end\r
41 \r
42 \r
43 % Corps d'algorithme\r
44 O=ones(size(T));\r
45 Auxi=D(n+1).*O;\r
46 for i=n-1:-1:0\r
47    Auxi=(T-C(i+1)).*Auxi+D(i+1);\r
48 end\r
49 Z=Auxi;\r