Se la funzione
è molto buona si ha che il metodo dei trapezi
composito con ampiezza degli intervalli
ammette un sviluppo del tipo
con i vari
indipendenti da
e se
si ha che
. Poniamo
e
. Non possiamo
calcolare direttamente
e non conosciamo la funzione
,
conosciamo però il valore che questa assume in
punti distinti
ed è quindi possibile ricavare il valore del polinomio
interpolante
nel punto
ed assumere questo valore come
approssimazione di
e quindi dell'integrale. Il punto
non
appartiene all'intervallo in cui si interpola la
e per questo si
parla di estrapolazione. Scegliendo i vari
decrescenti secondo
la formula
,
si ottiene il
metodo di Romberg, e le varie
sono vicine al punto 0 più
delle
. Dovendo calcolare il valore del polinomio interpolante in
un punto si applica lo schema di Neville opportunamente modificato
tenendo conto che deve essere calcolato in
e la formula diventa
e
cioè il valore restituito dal metodo dei
trapezi composito con numero di punti via via crescente.
int=romberg(f,a,b,k) -
Calcola
secondo
il metodo di Romberg con k punti di
interpolazione
%ROMBERG
% function int=romberg(f,a,b,k)
% Calcola l'integrale di f su [a,b] con il metodo di
% estrapolazione di Romberg.
% k e' il numero di valutazioni del metodo dei trapezi che
% devono essere fatte per inizializzare il metodo.
function int=romberg(f,a,b,k)
t=zeros(k,1);
quattro=t;
n=1;
for i=1:k
t(i)=trapezicomp(f,a,b,n);
n=2*n;
end
% Calcola le potenze di quattro in un vettore.
q=4;
for i=1:k
quattro(i)=q;
q=q*4;
end
for i=1:k
for j=k:-1:i+1
t(j)=t(j)+(t(j)-t(j-1))/(quattro(j)-1);
end
end
int=t(k);
>> romberg('sin',0,pi,5)
ans =
1.9747
>> romberg('sin',0,pi,12)
ans =
2.0000
>> romberg('Runge',0,pi,12)
ans =
1.26248605700994
>> atan(pi)
ans =
1.26262725567891
2004-05-29