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