con
fissato e discreto,
con
che varia con
continuità su [0,n] e se
ottengo
. Gli estremi di
integrazione diventano quindi [0,n] ed il problema viene trasformato
nel calcolo di
integrale=newtoccotes(f,a,b,m) -
Calcola
mediante la formula di quadratura di Newton Cotes mediante la formula
di grado
.
%function integrale=newtoncotes(f,a,b,m)
% m=grado della formula di Newton - cotes
% 1 = trapezi
% 2 = Simpson
% 3 = pulcherrima
% 4 = Milne
% 5 = -
% 6 = Weddle
% 7 = -
% altro = non implementato
function integrale=newtoncotes(f,a,b,m)
newcottab= [ 1 1 0 0 0 0 0 0 ; ...
1 4 1 0 0 0 0 0; ...
1 3 3 1 0 0 0 0 ; ...
7 32 12 32 7 0 0 0 ; ...
19 75 50 50 75 19 0 0 ; ...
41 216 27 272 27 216 41 0 ; ...
5257 25039 9261 20923 20923 9261 25039 5257 ];
ns= [ 2 6 8 90 288 840 120960 ];
n=m+1;
h=(b-a)/m;
x=a:h:b;
F=mfeval(f,x);
integrale=0;
for i=1:n
integrale=integrale+F(i)*newcottab(m,i);
end
integrale=integrale*(b-a)/ns(m);
return
>> newtoncotes('sin',0,pi,1)
ans =
1.923607162353882e-016
>> newtoncotes('sin',0,pi,2)
ans =
2.09439510239320
>> newtoncotes('sin',0,pi,4)
ans =
1.99857073182384
>> newtoncotes('sin',0,pi,7)
ans =
2.00001086554154
Specializzando il metodo per
ed
si ottengono rispettivamente
il metodo dei trapezi e quello di Simpson. Nel primo metodo la formula di
quadratura diventa
x=trapezi(f,a,b) -
Calcola
mediante il
metodo dei trapezi
%TRAPEZI %function [x]=trapezi(f,a,b) % Calcola l'integrale di f in [a,b] con la formula % dei trapezi. function [x]=trapezi(f,a,b) fa=feval(f,a); fb=feval(f,b); x=((b-a)/2)*(fa+fb); return
>> trapezi('sin',0,pi)
ans =
1.923670693721790e-16
>> type parabola
function y=parabola(x)
y=x^2
>> trapezi ('parabola',0,3)
ans =
13.50000000000000
x=Simpson(f,a,b) -
Calcola
mediante il
metodo di Simpson
%SIMPSON %function [x]=Simpson(f,a,b) % Calcola l'integrale di f in [a,b] con la formula % di Simpson. function [x]=Simpson(f,a,b) fa=feval(f,a); f1=feval(f,(a+b)/2); fb=feval(f,b); x=((b-a)/6)*(fa+4*f1+fb); return;
>> Simpson('Runge',0,1)
ans =
0.78333333333333
>> atan(1)
ans =
0.78539816339745
>> Simpson('parabola',0,3)
ans =
9
Ci sono due proprietà fondamentali dei coefficienti
: