vuoi
o PayPal
tutte le volte che vuoi
T S
Questo problema può essere superato con le formule di quadratura composite.
Sostituendo ad f sull’intervallo [a,b] l’interpolante di Lagrange di grado 1 su m (m 1)
sottointervalli, la formula dei trapezi composita si può scrivere come:
b a
m-1 -
(f(
∙∑ ) f( ))
I(f) = , H = .
=0 m
2
Analogamente sostituendo ad f su [a,b] il polinomio interpolante di grado 2, la
–
formula di Cavalieri Simpson composita si può scrivere come:
b a
m-1 -
(f(
∙∑ ) f( ) f( ),
I(f) = H = .
=0 m
3 Pagina | 5
Capitolo 2- Function del metodo dei trapezi e di Cavalieri - Simpson
2. Function metodo dei trapezi e di Cavalieri - Simpson
Struttura dell’algoritmo
2.1.
2.1.1. Metodo dei trapezi
Si riportano di seguito i passi necessari per la costruzione dell’algoritmo basato sul
metodo dei trapezi.
% Fun è la funzione integranda
% a è l’estremo inferiore dell’intervallo
% b è l’estremo superiore dell’intervallo
% Nmax è il numero massimo di iterazioni di confronto
% n1 è il numero iniziale di sottointervalli
% toll è la tolleranza assunta
1) Leggi: Fun, a, b, Nmax, n1 e toll.
2) h1 = (b-a)/n1
I1 = 0
per (Contatore1 = 1:n1)
Festri1 = Fun(a + (Contatore1-1)*h1)
Festrs1 = Fun(a + Contatore1*h1)
I1 = I1 + ((h1/2)*(Festri1+Festrs1))
fine
n2 = 2*n1
per ( Iter = 1:Nmax)
I2 = 0
h2 = (b-a)/n2
per (Contatore2 = 1:n2)
Festri2 = Fun(a + (Contatore2-1)*h2)
Festrs2 = Fun(a + Contatore2*h2)
I2 = I2 + ((h2/2)*(Festri2+Festrs2))
fine
se |I2-I1| toll
I = I2
stop
altrimenti
I1 = I2
n2 = 2*n2
fine
fine
se (Iter == Nmax ed |I2-I1| > toll
I non raggiunto
fine
3) Scrivi: I Pagina | 6
Capitolo 2- Function del metodo dei trapezi e di Cavalieri - Simpson
–
2.1.2. Metodo di Cavalieri Simpson
di seguito i passi necessari per la costruzione dell’algoritmo basato sul
Si riportano –
metodo di Cavalieri Simpson.
% Fun è la funzione integranda
% a è l’estremo inferiore dell’intervallo
% b è l’estremo superiore dell’intervallo
% Nmax è il numero massimo di iterazioni di confronto
% n1 è il numero iniziale di sottointervalli
% toll è la tolleranza assunta
1) Leggi: Fun, a, b, Nmax, n1 e toll.
2) h1 = (b-a)/n1
I1 = 0
per (Contatore1 = 1:n1/2)
Festri1 = Fun(a + (2*Contatore1-2)*h1)
Fint1 = Fun(a + (2*Contatore1-1)*h1)
Festrs1 = Fun(a + (2*Contatore1)*h1)
I1 = I1 + ((h1/3)*(Festri1+4*Fint1+Festrs1))
fine
n2 = 2*n1
per ( Iter = 1:Nmax)
I2 = 0
h2 = (b-a)/n2
per (Contatore2 = 1:n2/2)
Festri2 = Fun(a + (2*Contatore2-2)*h2)
Fint2 = Fun(a + (2*Contatore2-1)*h2)
Festrs2 = Fun(a + (2*Contatore2)*h2)
I2 = I2 + ((h2/3)*(Festri2+4*Fint2+Festrs2))
fine
se |I2-I1| toll
I = I2
stop
altrimenti
I1 = I2
n2 = 2*n2
fine
fine
se (Iter == Nmax ed |I2-I1| > toll
I non raggiunto
fine
3) Scrivi: I Pagina | 7
Capitolo 2- Function del metodo dei trapezi e di Cavalieri - Simpson
2.2. Function
2.2.1. Metodo dei trapezi
function[Int,Out] = Met_Trapezi(Fun,a,b,Nmax,n1,toll)
%--------------------------------------------------------------------------
% Formula dei trapezi
%--------------------------------------------------------------------------
%
% function [Int,Out] = Met_Trapezi(Fun,a,b,Nmax,n1,toll)
%
% ||Input||
% Fun è la funzione da integrare
% a è l'estremo inferiore dell'intervallo di integrazione
% b è l'estremo superiore dell'intervallo di integrazione
% Nmax è il massimo numero di iterazioni di confronto
% n1 è il numero di sottointervalli a cui applicare il metodo dei trapezi
% toll è la tolleranza assunta
%
% ||Output||
% Int è l'approssimazione numerica dell'integrale
% Out è l'esito del procedimento:
% Out = 0 --> Si verifica il criterio d'arresto
% Out = 1 --> Non si verifica il criterio d'arresto
%
% ||Variabili tabella||
% Iter sono le iterazioni di confronto
% Diff è la differenza tra due soluzioni |Iter2-Iter1|
h1 = (b-a)/n1;% Ampiezza del primo intervallo
Int1 = 0;
for Count1 = 1:n1
Finf1 = feval(Fun,a+(Count1-1)*h1);% Valutazione della funzione negli
Fsup1 = feval(Fun,a+Count1*h1); % estremi dell'intervallo
Int1 = Int1+((h1/2)*(Finf1+Fsup1));
end
n2 = 2*n1;
disp(sprintf(' Iter Diff'))% Creazione tabella
for Iter = 1:Nmax
Int2 = 0;
h2 = (b-a)/n2;% Ampiezza del secondo intervallo
for Count2 = 1:n2
Finf2 = feval(Fun,a+(Count2-1)*h2);% Valutazione della funzione
Fsup2 = feval(Fun,a+Count2*h2); % negli estremi dell'intervallo
Int2 = Int2+((h2/2)*(Finf2+Fsup2));
end
Diff = abs(Int2-Int1);
disp(sprintf('%8.0f: %20.16e',Iter,Diff))% Inserimento dati Pagina | 8
Capitolo 2- Function del metodo dei trapezi e di Cavalieri - Simpson
if Diff <= toll;% Verifica del criterio d’arresto
Int = Int2;
Out = 0;
format long
disp(sprintf('\n Si verifica il criterio d''arresto:',Int))
break
else Int1 = Int2;
n2 = 2*n2;
end
end
if Iter == Nmax && Diff > toll
Int = 0;
Out = 1;
disp(sprintf('\n Non si è verificato il criterio d''arresto'))
return
end
end Pagina | 9
Capitolo 2- Function del metodo dei trapezi e di Cavalieri - Simpson
–
2.2.2 Metodo di Cavalieri Simpson
function[Int,Out] = Met_Simpson(Fun,a,b,Nmax,n1,toll)
%--------------------------------------------------------------------------
% Formula di Cavalieri - Simpson
%--------------------------------------------------------------------------
%
% function [Int,Out] = Met_Simpson(Fun,a,b,Nmax,n1,toll)
%
% ||Input||
% Fun è la funzione da integrare
% a è l'estremo inferiore dell'intervallo di integrazione
% b è l'estremo superiore dell'intervallo di integrazione
% Nmax è il massimo numero di iterazioni di confronto
% n1 è il numero di sottointervalli a cui applicare il metodo dei trapezi
% toll è la tolleranza assunta
%
% ||Output||
% Int è l'approssimazione numerica dell'integrale
% Out è l'esito del procedimento:
% Out = 0 --> Si verifica il criterio d'arresto
% Out = 1 --> Non si verifica il criterio d'arresto
%
% ||Variabili tabella||
% Iter sono le iterazioni di confronto
% Diff è la differenza tra due soluzioni |Iter2-Iter1|
h1 = (b-a)/n1;% Ampiezza del primo intervallo
Int1 = 0;
for Count1 = 1:n1/2
Finf1 = feval(Fun,a+(2*Count1-2)*h1);% Valutazione della funzione negli
Fint1 = feval(Fun,a+(2*Count1-1)*h1);% estremi dell'intervallo e nel
Fsup1 = feval(Fun,a+(2*Count1)*h1); % punto intermedio
Int1 = Int1+(h1/3)*(Finf1+4*Fint1+Fsup1);
end
n2 = 2*n1;
disp(sprintf(' Iter Diff'))% Creazione tabella
for Iter = 1:Nmax
Int2 = 0;
h2 = (b-a)/n2;% Ampiezza del secondo intervallo
for Count2 = 1:n2/2
Finf2 = feval(Fun,a+(2*Count2-2)*h2);% Valutazione della funzione
Fint2 = feval(Fun,a+(2*Count2-1)*h2);% nel punto intermedio e agli
Fsup2 = feval(Fun,a+(2*Count2)*h2); % estremi dell’intervallo
Int2 = Int2+(h2/3)*(Finf2+4*Fint2+Fsup2);
end Pagina | 10
Capitolo 2- Function del metodo dei trapezi e di Cavalieri - Simpson
Diff = abs(Int2-Int1);
disp(sprintf('%8.0f: %20.16e',Iter,Diff))% Inserimento dati
if Diff <= toll% Verifica del criterio d’arresto
Int = Int2;
Out = 0;
format long
disp(sprintf('\n Si verifica il criterio d''arresto:',Int))
break
else Int1 = Int2;
n2 = 2*n2;
end
end
if Iter == Nmax && Diff > toll
Int = 0;
Out = 1;
disp(sprintf('\n Non si è verificato il criterio d''arresto'))
return
end
end Pagina | 11
Capitolo 3- Risultati delle function
3. Risultati delle function
Le function create consentono dunque di approssimare numericamente il calcolo di
un integrale definito.
è applicare le function per calcolare l’integrale, nell’intervallo [0,1], della
L’obiettivo 2
-2
) ∙ e
√
funzione f(x) = sin( - 0.3.
Si riporta di seguito l’M-file (Fun.m) contenente la funzione suddetta:
function [f] = f(x)
% Funzione oggetto di studio
f = sin(sqrt(x))*exp(-2*x^2)-0.3;
end
Preliminarmente, per verificare il corretto funzionamento degli M-file realizzati, sono
stati applicati ad una funzione (Funv.m) il cui integrale risulta di più facile risoluzione:
function [f] = f(x)
% Funzione di verifica
f = x^3-6*x+3*(x^2);
end
Risolvendo analiticamente l’integrale nell’intervallo chiuso [0,1] in cui la funzione è
1 [ ]
3 2 3 2
( – 3 )d
∫
continua, si ottiene: = -3 = -1.75.
0
Si riportano di seguito i risultati ottenuti con Matlab.
Figura 3.1 – Calcolo dell’integrale con il metodo dei trapezi Pagina | 12
Capitolo 3- Risultati delle function
Figura 3.2 – Calcolo dell’integrale con il metodo di Cavalieri - Simpson
Gli algoritmi proposti sono dunque in grado di risolvere con buona approssimazione
l’integrale.
Si riportano di seguito i risultati ottenuti con la funzione in esame.
Figura 3.3 – Calcolo dell’integrale con il metodo dei Trapezi Pagina | 13
Capitolo 3- Risultati delle function
Figura 3.4 – Calcolo dell’integrale con il metodo di Cavalieri - Simpson Trapezi
Si osservi che, nel metodo di Cavalieri-Simpson, affinché si verifichi il criterio
d’arresto sono richieste undici iterazioni di confronto.
Per verificare l’effettivo funzionamento della funzione creata si è dunque inserito un
numero di iterazioni massime inferiore a quello necessario.
che non si è verificato il criterio d’arresto.
Come atteso il programma informa
Figura 3.5 – Calcolo dell’integrale con il metodo di Cavalieri - Simpson Trapezi: soluzione non raggiunta Pagina | 14
Capitolo 4- Confronto dei risultati
4. Confronto dei risultati
I risultati ottenuti attraverso le funzioni Matlab costruite sono stati infine comparati
“quad”.
con quelli forniti dalla funzione interna a Matlab
La sua sintassi di base è I = quad (@Fun,a,b), dove:
@Fun è un handle di funzione;
l’estremo inferiore dell’intervallo;
a è
l’estremo superiore dell’intervallo.
b è approssima l’integral