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