1 function res=int_fcn(c,N,A,B,fcn,varargin)
\r
4 % int_fcn : calcul approché d'intégrale par méthode classique
\r
6 % *********************************************************
\r
8 % res=int_fcn(c,N,A,B,fcn,varargin) renvoie la valeur approchée de l'intégrale
\r
9 % d'une fonction sur un intevalle par la méthodes des rectangles, des milieux,
\r
10 % des trapèzes ou de simpson.
\r
12 % variables d'entrées :
\r
13 % * c définit la méthode :
\r
14 % c=1 : méthode des rectangles,
\r
15 % c=2 : méthode des trapèzes,
\r
16 % c=3 : méthode des milieux,
\r
17 % c=4 : méthode de Simpson;
\r
18 % * N est le nombre de sous intervalles utilisés (correspondant à h=(B-A)/N)
\r
19 % * [A,B] est l'intervalle d'intégration
\r
20 % * fcn est une chaîne de caractère représentant la fonction
\r
21 % (de type inline, builtin ou par fichier M-file);
\r
22 % * varargin sont les arguments optionnels de la fonction.
\r
23 % attention, intégration par rapport à la première variable de f.
\r
25 % variables de sortie
\r
26 % * res est la valeur approchée de l'intégrale calculée.
\r
29 % ************ Fonctions auxiliaires utilisées ************
\r
33 % *********************************************************
\r
38 % Contrôles d'entrée
\r
39 % nombre d'arguments
\r
41 error('il faut A<B');
\r
43 if (fix(N)~=N) | (N <1)
\r
44 error('n doit être un entier naturel non nul');
\r
46 if ~((c==1) | (c==2) | (c==3) | (c==4))
\r
47 error('c doit être un entier égal à 1, 2, 3 ou 4');
\r
50 if (qs~=2) & (qs~=5) & (qs~=1)
\r
51 error('fcn doit être le nom d''une fonction (built-in, M-file ou inline)');
\r
57 % calcul par la méthode des rectangles
\r
59 res=h*sum(feval(fcn,A:h:B-h,varargin{:}));
\r
60 % calcul par la méthode des trapèzes (sans trapz)
\r
62 res=(h/2)*(feval(fcn,A,varargin{:})+feval(fcn,B,varargin{:})+...
\r
63 2*sum(feval(fcn,A+h:h:B-h,varargin{:})));
\r
64 % calcul par la méthode du point milieu
\r
66 res=h*sum(feval(fcn,A+h/2:h:B-h/2,varargin{:}));
\r
67 % calcul par la méthode de Simpson
\r
69 res=(h/6)*(feval(fcn,A,varargin{:})+feval(fcn,B,varargin{:})+...
\r
70 2*sum(feval(fcn,A+h:h:B-h,varargin{:}))+...
\r
71 4*sum(feval(fcn,A+h/2:h:B-h/2,varargin{:})));
\r