]> AND Private Git Repository - cours-mesi.git/blob - tel/TPmatlab/integration/TP3b/int_gauss.m
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
j
[cours-mesi.git] / tel / TPmatlab / integration / TP3b / int_gauss.m
1 function Iapp=int_gauss(n,points,poids,rcn)\r
2 \r
3 % int_gauss : calcul de l'intégrale par méthode de Gauss à n+1 points\r
4 %\r
5 % *********************************************************\r
6 %\r
7 % Iapp=int_gauss(n,points,poids,fcn) : valeur approchée de l'intégrale\r
8 %   de la fonction rcn=r=f/w (w poids poids)  sur l'intervalle sous la forme conventionnelle (a,b) avec  \r
9 %   l'une des quatre méthodes à n+1 points: \r
10 %   Legendre, Tchebytchev, Hermite ou Laguerre, éventuellement en formel  \r
11 %\r
12 %\r
13 %       variables d'entrées : \r
14 %    *  n : entier naturel.\r
15 %     * points : tableau de taille (q+1)*(q+1) (avec n<=q) tel que \r
16 %                pour tout l dans {0,...,q}, points(l+1,1:l+1) contient\r
17 %                les l+1 points x_i de la formule (à l+1 points)\r
18 %     * poids  : tableau de taille (n+1)*(n+1) tel que \r
19 %                pour tout l dans {0,...,n}, poids(l+1,1:l+1) contient\r
20 %                les l+1 poids D_i de la formule (à l+1 points)\r
21 %     * rcn est une chaîne de caractère représentant la fonction r=f/w\r
22 %                (de type inline, builtin ou par fichier M-file);\r
23 %       variables de sortie\r
24 %     * Iapp : valeur approchée de l'intégrale de f sur un intervalle conventionnel.\r
25\r
26\r
27\r
28 % ************ Fonctions auxiliaires utilisées ************\r
29 %\r
30 %       aucune\r
31 %\r
32 % *********************************************************\r
33 \r
34 \r
35 % Contrôles d'entrée\r
36 % nombre d'arguments\r
37 if nargin~=4\r
38    error('nombre d''arguments de la fonction incorrect');\r
39 end\r
40 % autres tests éventuels \r
41 if (fix(n)~=n) | (n<0)\r
42    error('l''entier n doit être un entier naturel');\r
43 end\r
44 [q1,q2]=size(points);\r
45 [q3,q4]=size(poids);\r
46 if (q1~=q2)\r
47    error('attention, le troisième argument doit être une matrice carrée');\r
48 end\r
49 if (q3~=q4)\r
50    error('attention, le quatrième argument doit être une matrice carrée');\r
51 end\r
52 if (q1~=q3)\r
53    error('attention, le troisième et le quatrième argument doivent avoir la même taille');\r
54 end\r
55 if (n>q1-1) \r
56    error('attention, n est trop grand');\r
57 end\r
58 \r
59 % Corps d'algorithme.\r
60 Iapp=sum(feval(rcn,(points(n+1,1:n+1))).*poids(n+1,1:n+1));\r