integ=newtoncotescomp(f,a,b,m,n) -
Calcola
mediante
le formule compisite di Newton Cotes di grado
su
intervalli
function integ=newtoncotescomp(f,a,b,m,n) h=(b-a)/n; x=a:h:b; integ=0; for i=1:n-1 integ=integ+newtoncotes(f,x(i),x(i+1),m); end return
>> newtoncotescomp('sin',0,pi,4,100) ans = 1.99950656036573 >> newtoncotescomp('sin',0,pi,2,300) ans = 1.99994516937386 >> newtoncotescomp('parabola',0,3,4,100) ans = 8.73269100000000 >> newtoncotescomp('parabola',0,3,7,100) ans = 8.73269100000000 >> newtoncotescomp('parabola',0,3,7,1000) ans = 8.97302699100000
Specializzando il metodo si ottengono le formule composite dei trapezi
% TRAPEZI-COMP % function x=trapezi_comp(f,a,b,n) % Calcola l'integrale di f in [a,b] con la formula % composita dei trapezi su n intervalli. function x=trapezi_comp(f,a,b,n) h=(b-a)/n; F=zeros(1,n); ascisse=a:h:b; for i=1:n F(i)=feval(f,ascisse(i)); end somma=(F(1)+F(n))/2; for i=2:n-1 somma=somma+F(i); end x=somma*h; return
>> type parabola function y=parabola(x) y=x^2; >> trapezicomp ('parabola',0,3,10) ans = 6.60150000000000 >> trapezicomp ('parabola',0,3,15) ans = 7.33600000000000 >> trapezicomp ('parabola',0,3,100) ans = 8.73313650000000 >> trapezicomp ('parabola',0,3,500) ans = 8.94612589199999
e di Simpson (con pari)
%SIMPSONCOMP % function x=Simpsoncomp(f,a,b,m) % Calcola l'integrale di f in [a,b] con la formula % composita di Simpson su 2m +1 intervalli. function x=Simpsoncomp(f,a,b,m) n=2*m+1; h=(b-a)/n; F=zeros(1,n); ascisse=a:h:b; F=mfeval(f,ascisse); somma=F(1)+F(n); for i=2:n-1 molt=2*(1+(1- mod(i,2))); somma=somma+(molt*F(i)); end x=somma*(h/3); return
>> type parabola function y=parabola(x) y=x^2; >> Simpsoncomp('parabola',0,3,10) ans = 7.7745 >> Simpsoncomp('parabola',0,3,20) ans = 8.3574 >> Simpsoncomp('parabola',0,3,100) ans = 8.8663 >> Simpsoncomp('parabola',0,3,300) ans = 8.9551 >> Simpsoncomp('parabola',0,3,500) ans = 8.9731 >> Simpsoncomp('sin',0,pi,10) ans = 1.98883637511258 >> Simpsoncomp('sin',0,pi,20) ans = 1.99706618390939 >> Simpsoncomp('sin',0,pi,30) ans = 1.99867416802724 >> Simpsoncomp('sin',0,pi,100) ans = 1.99987785760372
2004-05-29