Quadratura numerica - Dipartimento di Matematica

Transcript

Quadratura numerica - Dipartimento di Matematica
Quadratura numerica
Alvise Sommariva
Università degli Studi di Padova
Dipartimento di Matematica Pura e Applicata
26 marzo 2013
Alvise Sommariva
Quadratura numerica
1/ 26
Formule di Newton-Cotes
Si supponga [a, b] un intervallo chiuso e limitato di R e sia w ≡ 1.
Per semplicità 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)
, k = 1, . . . , N.
N −1
Esempi:
N=2, regola del trapezio, g.d.p.=1:
(b))
I (f ) ≈ S1 (f ) := S1 (f , a, b) := (b−a) (f (a)+f
2
N=3, regola di Cavalieri-Simpson, g.d.p.=3:
I (f ) ≈ S3 (f ) := S3 (f , a, b) := b−a
f (a) + 4f ( a+b
6
2 ) + f (b)
Alvise Sommariva
Quadratura numerica
2/ 26
Formule di Newton-Cotes
0.9
0.9
0.8
0.8
0.7
0.7
0.6
0.6
0.5
0.5
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0.1
0
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
2.2
0
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
Figura : Regola del trapezio e di Cavalieri-Simpson per il calcolo di
R2
sin (x) dx (rispettivamente area in magenta e in azzurro).
0.5
Alvise Sommariva
Quadratura numerica
3/ 26
2.2
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à dell’integrale
Z
b
f (x) dx =
a
N−1
X Z xj+1
j=0
xj
f (x) dx ≈
N−1
X
S(f , xj , xj+1 )
(1)
j=0
dove S è una delle regole di quadratura finora esposte (ad esempio
S3 (f )). Le formule descritte in (1) sono dette composte.
Alvise Sommariva
Quadratura numerica
4/ 26
Formule di Newton-Cotes
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
Figura : Formula dei trapezi composta
Alvise Sommariva
2.2
R2
0.5
Quadratura numerica
sin (x) dx.
5/ 26
Formule dei trapezi composte
Formula composta dei trapezi: fissati il numero N di subintervalli e
i punti xk = a + kh dove h = b−a
N è definita da
f (x0 )
f (xN )
(c)
S1 := h
+ f (x1 ) + . . . + f (xN−1 ) +
(2)
2
2
il cui errore è
(c)
(c)
E1 (f ) := I (f ) − S1 (f ) =
−(b − a) 2 (2)
(b − a)
h f (ξ), h =
12
N
per qualche ξ ∈ (a, b);
Alvise Sommariva
Quadratura numerica
6/ 26
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−a
N sia
I (f ) ≈
(c)
S3 (f )
h
:=
6
"
f (x0 ) + 2
N−1
X
f (x2r ) + 4
r =1
N−1
X
#
f (x2s+1 ) + f (x2N )
s=0
(3)
il cui errore è
(c)
E3 (f )
:= I (f ) −
(c)
S3 (f )
−(b − a)
=
180
4
h
f (4) (ξ)
2
per qualche ξ ∈ (a, b).
Alvise Sommariva
Quadratura numerica
7/ 26
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=ones ( N +1 ,1) ;
% PESI INTEGRAZIONE .
w ( 1 ) = 0 . 5 ; w ( N+1) = 0 . 5 ;
w=w ∗ h ;
Alvise Sommariva
Quadratura numerica
8/ 26
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=ones ( 2 ∗ N +1 ,1) ;
% PESI INTEGRAZIONE .
w ( 3 : 2 : 2 ∗ N −1 ,1)=2∗ones ( l e n g t h ( 3 : 2 : 2 ∗ N −1) , 1 ) ;
w ( 2 : 2 : 2 ∗ N , 1 ) =4∗ones ( l e n g t h ( 2 : 2 : 2 ∗ N ) , 1 ) ;
w=w ∗ h / 6 ;
Alvise Sommariva
Quadratura numerica
9/ 26
Esempio 1
Vogliamo
R 1 20 approssimare l’integrale
−1 x dx = 2/21 ≈ 0.09523809523810 tramite le formule
composte dei trapezi e Cavalieri-Simpson. Perchè 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=inline ( ’ x . ˆ 2 0 ’ ) ;
% a =0; b =1; f= i n l i n e ( ’ e x p ( x ) ’ ) ;
N_trap=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 ) ;
fx_trap=f e v a l ( f , x_trap ) ; I_trap=w_trap ’ ∗ fx_trap ;
N_simpson =(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 ) ;
fx_simp=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 ) ) ;
f p r i n t f ( ’ \n\ t [ CS .COMP . ] [ RIS ] : %14.14 f \n\n ’ , I_simp ) ;
Alvise Sommariva
Quadratura numerica
10/ 26
Esempio 1
Ricordando che il risultato è 0.09523809523810, otteniamo i poco
soddisfacenti
[ TRAPEZI
[ TRAPEZI
[ SIMPSON
[ SIMPSON
COMPOSTA ]
COMPOSTA ]
COMPOSTA ]
COMPOSTA ]
[ PTS
[ RIS
[ PTS
[ RIS
]:
11
] : 0.20462631505024
]:
11
] : 0.13949200364447
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
L’errore rel. della formula comp. dei trapezi è solo di 5.55 · 10−2
mentre per quella di Cav. Simpson composta 1.94 · 10−3 , mentre
gli err. assoluti sono risp. circa 5.28 · 10−3 e 1.85 · 10−4 .
Alvise Sommariva
Quadratura numerica
11/ 26
Esempio 2
R1
Approssimiamo 0 exp (x)dx = exp(1) − 1 ≈ 1.718281828459046
tramite le formule composte dei trapezi e Cavalieri-Simpson.
Perchè 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
Gli errori relativi sono rispettivamente circa 8.33 · 10−4 e
5.55 · 10−7 , quelli assoluti circa 1.43 · 10−3 e 9.55 · 10−7 .
Alvise Sommariva
Quadratura numerica
12/ 26
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 δ è generalmente uguale almeno
a n − 1 ma in alcuni casi, come per la regola di Cavalieri-Simpson,
P
uguale al numero di nodi n. Vediamo ora formule nk=1 wk f (xk )
hanno grado di precisione δ maggiore di 2n − 1;
per qualche funzione f : (a, b) → R continua approssimino
Rb
I (w ) (f ) := a f (x)w (x) dx, con (a,b) non necessariamente
limitato.
Alvise Sommariva
Quadratura numerica
13/ 26
Formule gaussiane
Teorema. Per ogni n ≥ 1 esistono e sono unici dei nodi x1 , . . . , xn
e pesi w1 , . . . , wn per cui il grado di precisione sia almeno 2n − 1. I
nodi sono gli zeri del polinomio ortogonale di grado n,
φn (x) = An · (x − x1 ) · . . . · (x − xn )
e i corrispettivi pesi sono
Z
wi =
b
Z
Li (x)w (x)dx =
a
b
Li (x)w (x)dx, i = 1, . . . , n.
a
Importante: Si dimostra che gli zeri sono semplici e interni
all’intervallo (a,b).
Alvise Sommariva
Quadratura numerica
14/ 26
Vantaggi integrali con peso
Teorema. Sia (a, b) un intervallo limitato e si supponga
Rb
w : (a, b) → R sia una funzione peso, I (w ) = a f (x)w (x)dx e
P
(w )
Im (f ) := m
k=1 wi f (xi ) una formula di quadratura avente g.d.p.
n. Allora ricordato che kIn k∞ = supf ∈C (a,b)\0 |In (f )|/kf k∞ ,
Rb
kw k1 = a w (x)dx, abbiamo
(w )
(w )
|I (w ) − Im (f )| ≤ kw k1 + kIm k∞ · min kf − qn k∞ .
qn ∈Pn
Considerazione: Si deduce che è importante avere formule con
grado di precisione n alto e f regolare cosı̀ da avere minore
minqn ∈Pn kf − qn k∞ .
Alvise Sommariva
Quadratura numerica
15/ 26
Esempio
Consideriamo il calcolo approssimato
Z 1
√
exp (x) 1 − x dx = 1.7791436546919097925911790299941.
−1
(4)
Non è suggerito il calcolo √
dell’integrale con formule composte
poichè la funzione exp (x) 1 − x è poco regolare.
Non è indicato usare formule
√ gaussiane con peso w (x) = 1
poichè la funzione exp (x) 1 − x è poco regolare.
Si suggerisce
√ di usare formule gaussiane con peso di Jacobi
w (x) = 1 − x = (1 − x)1/2 poichè la funzione exp (x) è
C ∞ (−1, 1).
Alvise Sommariva
Quadratura numerica
16/ 26
Formule gaussiane in Matlab
Il calcolo di nodi e pesi delle formule gaussiane, per una fissata
funzione peso w non è 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)
Z 1
n
X
f (x) · (1 − x)α (1 + x)β ≈
wi f (xi )
−1
i=1
f u n c t i o n [ x , w]= gauss_jacobi ( n , alpha , b e t a )
ab=r_jacobi ( n , alpha , b e t a ) ;
xw=gauss ( n , ab ) ;
x=xw ( : , 1 ) ;
w=xw ( : , 2 ) ;
Alvise Sommariva
Quadratura numerica
17/ 26
Formule gaussiane in Matlab: scalatura
Specialmente per le formule con peso w (x) ≡ 1 si ha spesso da
Rb
effettuare l’integrale a f (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
1
−1
Z
b
f (x)dx =
a
n
Xb−a
b−a
f (γ(t))dt ≈
wk f (γ(tk ))
2
2
Z
k=1
e quindi
f (x)dx ≈
a
n
X
wk∗ f (xk∗ )
k=1
con wk∗ = b−a
2 wk , xk = γ(tk ) = (a(1 − tk )/2) + (b(1 + tk )/2).
Questo processo si chiama scalatura dei nodi e dei pesi.
Alvise Sommariva
Quadratura numerica
18/ 26
Formule gaussiane in Matlab: demo
Scriviamo quindi nel file demo gauss jacobi
N =11;
alpha =0; b e t a =0;
a=−1; b =1; f=inline ( ’ x . ˆ 2 0 ’ ) ;
% a =0; b =1; f= i n l i n e ( ’ e x p ( x ) ’ ) ;
[ x , w]= gauss_jacobi ( 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
exp
(x)dx
= exp(1) − 1 ≈ 1.718281828459046.
0
Alvise Sommariva
Quadratura numerica
19/ 26
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à 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
R1
gaussiana con n = 11 è 2n − 1 = 21 e quindi l’integrale −1 x 20 dx
è calcolato, a meno di errori macchina, esattamente.
Alvise Sommariva
Quadratura numerica
20/ 26
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.718281828459045 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
che va confrontato, a parità di nodi, con 1.43 · 10−3 e 9.55 · 10−7
rispettivamente delle formule dei trapezi e Cavalieri-Simpson
composte.
Alvise Sommariva
Quadratura numerica
21/ 26
Formule gaussiane in Matlab: demo ed esempio 3
Approssimiamo in un file Matlab/Octave demo comparison.m
R1
√
−1 exp (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=inline ( ’ 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 ta ( 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 ta ( N , a , b ) ; % C . S .
fxcs=f e v a l ( g , xcs ) ; Ics=wcs ’ ∗ fxcs ; ecs=a b s ( Iex−Ics ) ;
[ xgl , wgl ]= gauss_jacobi ( N , 0 , 0 ) ; % G . L .
fxgl=f e v a l ( g , xgl ) ; Igl=wgl ’ ∗ fxgl ; egl=a b s ( Iex−Igl ) ;
[ xj , wj ]= gauss_jacobi ( 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 ) ;
f p r i n t f ( ’ GL : % 1 . 1 e GJ : % 1 . 1 e \n\n ’ , egl , ej ) ;
Alvise Sommariva
Quadratura numerica
22/ 26
Formule gaussiane in Matlab: demo ed esempio 3
Con ovvia notazione, a parità di valutazioni della funzione
integranda, abbiamo
>> d em o_ co m pa ri so n
[ TPZ ] : 4 . 4 e−02 [ CS ] :
>>
6 . 2 e−03 [ GL ] : 5 . 3 e−04 [ GJ ] :
6 . 7 e−16
che evidenzia la superiorità delle formule gaussiane, una volta che
il peso è scelto opportunamente.
Alvise Sommariva
Quadratura numerica
23/ 26
Esercizi
Calcolare con una opportuna formula gaussiana basata su 11 nodi:
1
Z
1
x 20
p
1 − x 2 dx
−1
2
Z
1
exp (x 2 ) · (1 − x)0.5 · (1 + x)1.5 dx
−1
L’integrale esatto può essere calcolato con Mathematica, Maple
(da Matlab, aiutarsi con Google) o quadgk di Matlab con un errore
assoluto di 10−15
>> Q = quadgk ( @ ( x ) ( x . ˆ 2 0 ) .∗(1 − x . ˆ 2 ) . ˆ ( 0 . 5 )
,10ˆ( −15) )
Q =
0.025160880188796
>>
Alvise Sommariva
Quadratura numerica
, −1 ,1 , ’ AbsTol ’
24/ 26
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
· (arcsin (1) − arcsin (−1)).
1816657920
Utilizzando la shell di Matlab
>> c =14549535/1816657920;
>> s=a s i n ( 1 )− a s i n ( −1) ;
>> I=s ∗ c ;
>> f o r m a t long ;
>> I
I =
0.025160880188796
>>
Alvise Sommariva
Quadratura numerica
25/ 26
Esercizi
Il secondo integrale non è 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)
Warning : Explicit integral could not be found .
> In sym . int at 58
ans =
int ( e x p (−x ˆ 2 ) ∗(1−x ) ˆ ( 1 / 2 ) ∗(1+ x ) ˆ ( 3 / 2 ) , x = −1 . . 1 )
Utilizzando la shell di Matlab e quadgk con un errore assoluto di
10−15
>> f o r m a t long ;
>> I=quadgk ( @ ( x ) ( e x p ( x . ˆ 2 ) ) . ∗ ( ( 1 − x ) . ˆ ( 0 . 5 ) ) . ∗ ( ( 1 + x ) . ˆ ( 1 . 5 ) )
, −1 ,1 , ’ AbsTol ’ ,10ˆ( −15) )
I =
2.086318843895086
>>
Alvise Sommariva
Quadratura numerica
26/ 26