Quadratura numerica
Alvise Sommariva
Universit`a degli Studi di Padova Dipartimento di Matematica Pura e Applicata
Formule di Newton-Cotes
Si supponga [a, b] un intervallo chiuso e limitato di R e sia w ≡ 1. Per semplicit`a di notazione, in questo caso porremo I := I(w )= I1.
Le regole di tipo Newton-Cotes (chiuse) che si ottengono integrando l’interpolante di f in nodi equispaziati
xk = a +
(k − 1) (b − a)
N − 1 , k = 1, . . . , N. Esempi:
N=2, regola del trapezio,g.d.p.=1:
I (f ) ≈ S1(f ) := S1(f , a, b) := (b−a) (f (a)+f (b))2
N=3, regola di Cavalieri-Simpson,g.d.p.=3:
I (f ) ≈ S3(f ) := S3(f , a, b) := b−a6 f (a) + 4f (a+b2 ) + f (b)
Formule di Newton-Cotes
0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 2.2 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 2.2 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9Figura : Regola del trapezio e di Cavalieri-Simpson per il calcolo di
R2
Formule di Newton-Cotes composte
Si suddivida l’intervallo (chiuso e limitato) [a, b] in N subintervalli Tj = [xj, xj +1] tali che xj = a + jh con h = (b − a)/N. Dalle
propriet`a dell’integrale Z b a f (x ) dx = N−1 X j =0 Z xj +1 xj f (x ) dx ≈ N−1 X j =0 S (f , xj, xj +1) (1)
Formule di Newton-Cotes
0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 2.2 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9Figura : Formula dei trapezi compostaR2
Formule dei trapezi composte
Formula composta dei trapezi: fissati il numero N di subintervalli e i punti xk = a + kh dove h = b−aN `e definita da
Formule di Cavalieri-Simpson composte
Formula composta di Cavalieri-Simpson: fissati il numero N di subintervalli e i punti xk = a + kh/2 dove h = b−aN sia
Formula trapezi composta
La funzione trapezi composta appena esposta calcola i nodi e i pesi della omonima formula composta.
f u n c t i o n [ x , w ]= t r a p e z i _ c o m p o s t a ( N , a , b ) % FORMULA DEI TRAPEZI COMPOSTA.
% INPUT :
% N : NUMERO SUBINTERVALLI . % a , b : ESTREMI DI INTEGRAZIONE . % OUTPUT :
% x : NODI INTEGRAZIONE .
% w : PESI INTEGRAZIONE ( INCLUDE I L PASSO ! ) .
h=(b−a ) / N ; % PASSO INTEGRAZIONE .
x=a : h : b ; x=x ’ ; % NODI INTEGRAZIONE .
w=o n e s ( N + 1 , 1 ) ; % PESI INTEGRAZIONE . w ( 1 ) = 0 . 5 ; w ( N +1) = 0 . 5 ;
Formula Cavalieri-Simpson composta
La funzione simpson composta appena esposta calcola i nodi e i pesi della omonima formula composta.
f u n c t i o n [ x , w ]= s i m p s o n _ c o m p o s t a ( N , a , b ) % FORMULA DI SIMPSON COMPOSTA.
% INPUT :
% N : NUMERO SUBINTERVALLI . % a , b : ESTREMI DI INTEGRAZIONE . % OUTPUT :
% x : INTEGRAZIONE .
% w : PESI INTEGRAZIONE ( INCLUDE I L PASSO ! ) .
h=(b−a ) / N ; % AMPIEZZA INTERVALLO .
x=a : ( h / 2 ) : b ; x=x ’ ; % NODI INTEGRAZIONE .
w=o n e s ( 2∗ N +1 ,1) ; % PESI INTEGRAZIONE .
Esempio 1
Vogliamo approssimare l’integrale R1
−1x20dx = 2/21 ≈ 0.09523809523810 tramite le formule
composte dei trapezi e Cavalieri-Simpson. Perch`e il paragone sia veritiero, decidiamo che il numero di valutazioni della funzione integranda sia uguale. Scriviamo nel file demo composte.m
N =11; %SCEGLIERE DISPARI . a=−1; b =1; f=i n l i n e (’ x . ˆ 2 0 ’) ; % a =0; b =1; f= i n l i n e ( ’ e x p ( x ) ’ ) ;
N _ t r a p=N −1; % TRAPEZI COMPOSTA.
[ x_trap , w_trap ]= t r a p e z i _ c o m p o s t a ( N_trap , a , b ) ; f x _ t r a p=f e v a l( f , x_trap ) ; I_trap=w_trap ’∗ fx_trap ; N _ s i m p s o n =(N −1) / 2 ; % CAV . SIMPSON COMPOSTA. [ x_simp , w_simp ]= s i m p s o n _ c o m p o s t a ( N_simpson , a , b ) ; f x _ s i m p=f e v a l( f , x_simp ) ; I_simp=w_simp ’∗ fx_simp ;
f p r i n t f(’ \ n \ t [ TPZ .COMP . ] [ PTS ] : %4.0 f ’,l e n g t h( x_trap ) ) ;
f p r i n t f(’ \ n \ t [ TPZ .COMP . ] [ RIS ] : %14.14 f ’, I_trap ) ;
f p r i n t f(’ \ n \ t [ CS .COMP . ] [ PTS ] : %4.0 f ’,l e n g t h( x_simp ) ) ;
Esempio 1
Ricordando che il risultato `e 0.09523809523810, otteniamo i poco soddisfacenti
[ T R A P E Z I C O M P O S T A ] [ PTS ] : 11
[ T R A P E Z I C O M P O S T A ] [ RIS ] : 0 . 2 0 4 6 2 6 3 1 5 0 5 0 2 4 [ S I M P S O N C O M P O S T A ] [ PTS ] : 11
[ S I M P S O N C O M P O S T A ] [ RIS ] : 0 . 1 3 9 4 9 2 0 0 3 6 4 4 4 7
Posto N = 51 nella prima riga di demo composte.m
[ TPZ . COMP . ] [ PTS ] : 51
[ TPZ . COMP . ] [ RIS ] : 0 . 1 0 0 5 2 3 2 8 8 3 6 7 4 2 [ CS . COMP . ] [ PTS ] : 51
[ CS . COMP . ] [ RIS ] : 0 . 0 9 5 4 2 2 9 2 1 8 8 9 1 7
Esempio 2
ApprossimiamoR1
0 exp (x )dx = exp(1) − 1 ≈ 1.718281828459046
tramite le formule composte dei trapezi e Cavalieri-Simpson. Perch`e il paragone sia veritiero, decidiamo che il numero di valutazioni della funzione integranda sia uguale. Modifichiamo la funzione f nel file demo composte.m e ricaviamo
[ TPZ . COMP . ] [ PTS ] : 11
[ TPZ . COMP . ] [ RIS ] : 1 . 7 1 9 7 1 3 4 9 1 3 8 9 3 1 [ CS . COMP . ] [ PTS ] : 11
[ CS . COMP . ] [ RIS ] : 1 . 7 1 8 2 8 2 7 8 1 9 2 4 8 2
Formule gaussiane
Nelle formule interpolatorie di Newton-Cotes (come ad esempio la regola del Trapezio o di Cavalieri-Simpson) i nodi x1, . . . , xn sono
equispaziati e il grado di precisione δ `e generalmente uguale almeno a n − 1 ma in alcuni casi, come per la regola di Cavalieri-Simpson, uguale al numero di nodi n. Vediamo ora formulePn
k=1wkf (xk)
hanno grado di precisione δ maggiore di 2n − 1;
per qualche funzione f : (a, b) → R continua approssimino I(w )(f ) :=Rb
a f (x )w (x ) dx , con (a,b) non necessariamente
Formule gaussiane
Teorema. Per ogni n ≥ 1 esistono e sono unici dei nodi x1, . . . , xn
e pesi w1, . . . , wnper cui il grado di precisione sia almeno 2n − 1. I
nodi sono glizeri del polinomio ortogonale di grado n, φn(x ) = An· (x − x1) · . . . · (x − xn)
e i corrispettivi pesi sono wi = Z b a Li(x )w (x )dx = Z b a Li(x )w (x )dx , i = 1, . . . , n.
Importante: Si dimostra che gli zeri sonosemplici e interni
Vantaggi integrali con peso
Teorema. Sia (a, b) un intervallo limitato e si supponga w : (a, b) → R sia una funzione peso, I(w )=Rb
a f (x )w (x )dx e
Im(w )(f ) :=Pmk=1wif (xi) una formula di quadratura avente g.d.p.
n. Allora ricordato che kInk∞= supf ∈C (a,b)\0|In(f )|/kf k∞,
kw k1= Rb a w (x )dx , abbiamo |I(w )− Im(w )(f )| ≤ kw k1+ kIm(w )k∞ · min qn∈Pn kf − qnk∞.
Esempio
Consideriamo il calcolo approssimato Z 1
−1
exp (x )√1 − x dx = 1.7791436546919097925911790299941.
(4) Non `e suggerito il calcolo dell’integrale con formule composte poich`e la funzione exp (x )√1 − x `e poco regolare.
Non `e indicato usare formule gaussiane con peso w (x ) = 1 poich`e la funzione exp (x )√1 − x `e poco regolare.
Formule gaussiane in Matlab
Il calcolo di nodi e pesi delle formule gaussiane, per una fissata funzione peso w non `e semplice. Di seguito ci interesseremo al caso particolare delle funzioni peso di Jacobi. A tal proposito aiutano le routines gauss.m e r jacobi.m di W. Gautschi e D. Laurie che possono essere scaricate dalla homepage del primo autore. La funzione gauss jacobi.m, se registrata nella stessa cartella di gauss.m e r jacobi.m, calcola i nodi x = {xi}i =1,...,n e i pesi
w = {wi}i =1,...,n della formula gaussiana (avente g.d.p. 2n − 1)
Formule gaussiane in Matlab: scalatura
Specialmente per le formule con peso w (x ) ≡ 1 si ha spesso da effettuare l’integraleRabf (x )dx con (a, b) diverso da (−1, 1). In tal caso si osserva che se γ(t) = (a(1 − t)/2) + (b(1 + t)/2), per {tk}
e {wk} nodi e pesi della formula di Gauss-Legendre,
Z b a f (x )dx = Z 1 −1 b − a 2 f (γ(t))dt ≈ n X k=1 b − a 2 wkf (γ(tk)) e quindi Z b a f (x )dx ≈ n X k=1 wk∗f (xk∗)
con wk∗= b−a2 wk, xk = γ(tk) = (a(1 − tk)/2) + (b(1 + tk)/2).
Formule gaussiane in Matlab: demo
Scriviamo quindi nel file demo gauss jacobi
N =11; a l p h a =0; b e t a=0; a=−1; b =1; f=i n l i n e (’ x . ˆ 2 0 ’) ; % a =0; b =1; f= i n l i n e ( ’ e x p ( x ) ’ ) ; [ x , w ]= g a u s s _ j a c o b i ( N , alpha ,b e t a) ; xx=a∗(1−x )/2+b∗(1+x ) / 2 ; ww=(b−a ) ∗w / 2 ; fxx=f e v a l( f , xx ) ; I=ww ’∗ fxx ; f p r i n t f(’ \ n \ t [ N] : % 3 . 0 f [ I ] : %1.15 e \ n \ n ’, N , I )
calcolando cos`ı con una formula gaussiana di 11 nodi l’integrale R1
Formule gaussiane in Matlab: demo ed esempio 1
Dalla shell di Matlab/Octave
>> d e m o _ g a u s s _ j a c o b i [ N ] : 11 [ I ] : 9 . 5 2 3 8 0 9 5 2 3 8 0 9 5 5 1 e−02 >> I I = 9 . 5 2 3 8 0 9 5 2 3 8 0 9 5 5 1 e−02 >> Iex =2/21; a b s( I−Iex ) a n s = 2 . 7 7 5 5 5 7 5 6 1 5 6 2 8 9 1 e−16
che va confrontato, a parit`a di nodi, con 5.28 · 10−3 e 1.85 · 10−4 rispettivamente delle formule dei trapezi e Cavalieri-Simpson composte. Si osservi che il grado di precisione della formula gaussiana con n = 11 `e 2n − 1 = 21 e quindi l’integraleR1
−1x20dx
Formule gaussiane in Matlab: demo ed esempio 2
Dalla shell di Matlab/Octave, rimaneggiando i commenti del codice, >> d e m o _ g a u s s _ j a c o b i [ N ] : 11 [ I ] : 1 . 7 1 8 2 8 1 8 2 8 4 5 9 0 4 5 e+00 >> Iex=e x p( 1 )−e x p( 0 ) ; I = 1 . 7 1 8 2 8 1 8 2 8 4 5 9 0 4 5 e +00; >> a b s( Iex−I ) a n s = 4 . 4 4 0 8 9 2 0 9 8 5 0 0 6 2 6 e−16
Formule gaussiane in Matlab: demo ed esempio 3
Approssimiamo in un file Matlab/Octave demo comparison.m R1
−1exp (x )
√
1 − x dx = 1.77914365469190979259 . . . . mediante la formula dei trapezi composta, Cav.-Simpson composta,
Gauss-Legendre e Gauss-Jacobi con α = 1/2, β = 0.
N =11; a=−1;b =1; Iex = 1 . 7 7 9 1 4 3 6 5 4 6 9 1 9 0 9 7 9 2 5 9 1 1 7 9 0 2 9 9 9 4 1 ; g=i n l i n e (’ e x p ( x ) .∗ s q r t (1−x ) ’) ; f=inline (’ e x p ( x ) ’) ; [ xt , wt ]= t r a p e z i _ c o m p o s t a ( N , a , b ) ; % TPZ .
fxt=f e v a l( g , xt ) ; It=wt ’∗ fxt ; et=a b s( Iex−It ) ; [ xcs , wcs ]= s i m p s o n _ c o m p o s t a ( N , a , b ) ; % C . S .
f x c s=f e v a l( g , xcs ) ; Ics=wcs ’∗ fxcs ; ecs=a b s( Iex−Ics ) ; [ xgl , wgl ]= g a u s s _ j a c o b i ( N , 0 , 0 ) ; % G . L .
f x g l=f e v a l( g , xgl ) ; Igl=wgl ’∗ fxgl ; egl=a b s( Iex−Igl ) ; [ xj , wj ]= g a u s s _ j a c o b i ( N , 0 . 5 , 0 ) ; % G . J .
fxj=f e v a l( f , xj ) ; Ij=wj ’∗ fxj ; ej=a b s( Iex−Ij ) ;
f p r i n t f(’ \ n TPZ: % 1 . 1 e CS : % 1 . 1 e ’, et , ecs ) ;
Formule gaussiane in Matlab: demo ed esempio 3
Con ovvia notazione, a parit`a di valutazioni della funzione integranda, abbiamo
>> d e m o _ c o m p a r i s o n
[ TPZ ] : 4 . 4 e−02 [ CS ] : 6 . 2 e−03 [ GL ] : 5 . 3 e−04 [ GJ ] : 6 . 7 e−16 >>
Esercizi
Calcolare con una opportuna formula gaussiana basata su 11 nodi: 1 Z 1 −1 x20p1 − x2dx 2 Z 1 −1 exp (x2) · (1 − x )0.5· (1 + x)1.5dx
Esercizi
In alternativa usando online il Wolfram Integrator, e ricordando che devo integrare in (−1, 1), dal teorema fondamentale del calcolo si vede che si tratta di valutare
14549535
1816657920· (arcsin (1) − arcsin (−1)). Utilizzando la shell di Matlab
Esercizi
Il secondo integrale non `e integrabile col Wolfram integrator e nemmeno col calcolo simbolico di Matlab.
>> syms x >> int ( (e x p(−x . ˆ 2 ) ) .∗((1 − x ) . ˆ ( 0 . 5 ) ) .∗((1+ x ) . ˆ ( 1 . 5 ) ) , −1 ,1) W a r n i n g : E x p l i c i t i n t e g r a l c o u l d not be f o u n d . > In sym . int at 58 a n s = int (e x p(−x ˆ 2 )∗(1−x ) ˆ(1/2) ∗(1+x ) ˆ(3/2) , x = −1 . . 1)