function [Isic]=simpsonc(a,b,M,f,varargin) %SIMPSONC Formula composita di Simpson % ISIC = SIMPSONC(A,B,M,FUN) calcola una % approssimazione dell'integrale della funzione % FUN tramite la formula composita di Simpson % (su M intervalli equispaziati). FUN e' una % function che riceve in ingresso un vettore reale x % e restituisce un vettore reale. % FUN puo' essere una inline function, una anonymous % function o una function definita in un M-file. % ISIC = SIMPSONC(A,B,M,FUN,P1,P2,...) passa alla % function FUN i parametri opzionali P1,P2,... % come FUN(X,P1,P2,...). H=(b-a)/M; x=linspace(a,b,M+1); fpm=feval(f,x,varargin{:}).*ones(1,M+1); fpm(2:end-1) = 2*fpm(2:end-1); Isic=H*sum(fpm)/6; x=linspace(a+H/2,b-H/2,M); fpm=feval(f,x,varargin{:}).*ones(1,M); Isic = Isic+2*H*sum(fpm)/3; return