• Non ci sono risultati.

Equazione di Poisson.

N/A
N/A
Protected

Academic year: 2021

Condividi "Equazione di Poisson."

Copied!
25
0
0

Testo completo

(1)

Equazione di Poisson.

Alvise Sommariva

Universit`

a degli Studi di Padova

Dipartimento di Matematica

18 maggio 2021

(2)

Equazione di Poisson, caso bivariato.

Da

∆u(x

i

, y

j

) ≈

u(x

i +1

, y

j

) + u(x

i −1

, y

j

) + u(x

i

, y

j +1

) + u(x

i

, y

j −1

) − 4u(x

i

, y

j

)

h

2

(1)

ricaviamo la discretizzazione dell’equazione



∆u(x , y ) = f (x , y ), (x , y ) ∈ Ω = (0, 1) × (0, 1)

u(x , y ) = g (x , y ), (x , y ) ∈ ∂Ω

(2)

nei punti (x

i

, y

j

), x

i

= ih, y

j

= jh, h=1/(n+1)

u(xi +1, yj) + u(xi −1, yj

) + u(xi

, yj +1) + u(xi

, yj −1) − 4u(xi

, yj) = h

2

f (xi

, yj),

(3)

per i , j = 1, . . . , n, con le condizioni al contorno

u(x

i

, y

j

)

=

g (x

i

, y

j

), i = 0, j = 1, . . . , n

(4)

u(x

i

, y

j

)

=

g (x

i

, y

j

), i = n + 1, j = 1, . . . , n

(5)

(3)

Equazione di Poisson, caso bivariato.

Il sistema lineare ottenuto pu`

o essere descritto matricialmente. Sia

B la matrice n × n

B =

−4

1

0

. . .

0

1

−4

1

0

. . .

0

1

−4

1

. . .

. . .

. . .

. . .

. . .

. . .

0

. . .

0

1

−4

ed I la matrice identica di ordine n del tipo

I =

1

0

0

. . .

0

0

1

0

. . .

0

0

0

0

. . .

1

.

(4)

Equazione di Poisson, caso bivariato.

Allora

se b `

e il vettore ottenuto dai contributi dei termini dovuti a f

e g in (2) e (3),

A la matrice a blocchi

A =

B

I

0

. . .

I

B

I

. . .

. . .

. . .

. . .

. . .

. . .

0

I

B

si ricava che il sistema da risolvere `

e Au = b, usando ad esempio

il metodo di Jacobi, o

(5)

Equazione di Poisson: un esempio bivariato.

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 P 1 P2 P 3 P4

Figura:

Una griglia avente passo h = 1/3 relativamente al quadrato

[0, 1] × [0, 1].

.

(6)

Equazione di Poisson: un esempio bivariato.

Facciamo un esempio sulla risoluzione dell’equazione di Poisson via

metodo alle differenze con 5 punti.

Sia Ω = [0, 1] × [0, 1], h = 1/3 e siano

P

i ,j

= (ih, jh), i , j = 0, 1, 2, 3.

E’ chiaro che per

per i = 0 i punti P

0,j

sono sull’asse x = 0 (cio`

e l’asse y ),

per i = 3 i punti P

3,j

sono sull’asse x = 1,

per j = 0 i punti P

i ,0

sono sull’asse y = 0 (cio`

e l’asse x )

per j = 3 i punti P

i ,3

sono sull’asse y = 1.

(7)

Equazione di Poisson: un esempio bivariato.

I rimanenti punti P

i ,j

, con i , j = 1, 2 sono interni a Ω ed `

e

u(x

i +1

, y

j

) + u(x

i −1

, y

j

) + u(x

i

, y

j +1

) + u(x

i

, y

j −1

) − 4u(x

i

, y

j

) = h

2

f (x

i

, y

j

),

(7)

Poniamo ora

b

1

:= h

2

f (x

1

, y

1

) − g (x

0

, y

1

) − g (x

1

, y

0

),

b

2

:= h

2

f (x

1

, y

2

) − g (x

0

, y

2

) − g (x

1

, y

3

),

b

3

:= h

2

f (x

2

, y

1

) − g (x

3

, y

1

) − g (x

2

, y

0

),

b

4

; = h

2

f (x

2

, y

2

) − g (x

3

, y

2

) − g (x

2

, y

3

),

ordiniamo i punti da sinistra a destra, e dal basso verso l’alto (ordine lessicografico)

P

1

= (x

1

, y

1

), P

2

= (x

2

, y

1

), P

3

= (x

1

, y

2

), P

4

= (x

2

, y

2

),

poniamo u

1

= u(x

1

, y

1

), u

2

= u(x

2

, y

1

), u

3

= u(x

1

, y

2

), u

4

= u(x

2

, y

2

), ricavando

−4u

1

+ u

2

+ u

3

= b

1

,

u

1

− 4u

2

+ u

4

= b

2

,

u

1

− 4u

3

+ u

4

= b

3

,

u

2

+ u

3

− 4u

4

= b

4

,

da cui posto A la matrice di Poisson composta da 2 blocchi di ordine 2, basta risolvere

il sistema Au = b per ottenere u(x

1

, y

1

), u(x

2

, y

1

), u(x

1

, y

2

), u(x

2

, y

2

).

(8)

Equazione di Poisson: un esempio bivariato.

Notiamo che la matrice di Poisson calcolata dalla

gallery

di

Matlab `

e M = −A. In effetti:

>> M=g a l l e r y(’ p o i s s o n ’, 2 ) ; >> M=f u l l( M ) M = 4 −1 −1 0 −1 4 0 −1 −1 0 4 −1 0 −1 −1 4 >>

(9)

Equazione di Poisson: un esempio bivariato.

Per ogni punto P

k

, bisogna tenere conto nel termine noto della

k-sima equazione del contributo h

2

f (P

k

). Inoltre nella

determinazione dei contributi al termine noto dovuti a g e’ bene

aiutarsi con la griglia in figura.

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 P 7 P8 P9 P 6 P 5 P 4 P 1 P2 P3

Figura:

Griglia avente passo h = 1/4 relativamente a [0, 1] × [0, 1].

.

(10)

Equazione di Poisson: una implementazione.

1

Detto Ω = [0, 1] × [0, 1], determinare il termine noto

b

negli

n punti della griglia interni al quadrato e pi´

u in basso

, bisogna

tenere conto del valore della soluzione nel bordo orizzontale in

basso di Ω;

n punti della griglia interni al quadrato e pi´

u in alto

, bisogna

tenere conto del valore della soluzione nel bordo orizzontale in

alto di Ω;

n punti della griglia interni al quadrato e pi´

u a sinistra

, bisogna

tenere conto del valore della soluzione nel bordo verticale a

sinistra di Ω;

n punti della griglia interni al quadrato e pi´

u a destra

, bisogna

tenere conto del valore della soluzione nel bordo verticale a

destra di Ω.

2

Uno dei punti cruciali e’ che nel termine noto della generica k-sima

equazione si tiene conto relativamente al centro (x

i

, y

j

) della formula a 5

punti della k-sima equazione (risulta k = (j − 1)n + i ), tanto h

2

f (x

i

, y

j

)

(11)

Equazione di Poisson: una implementazione.

Salviamo in

poisson5pts.m

la funzione

f u n c t i o n [ x_grid , y_grid , u_grid ]= p o i s s o n 5 p t s ( n , f , g_left , g_right , g_down , g_up )

% INPUT : h =1/( n+1) , f , g l e f t , g r i g h t , g down , g u p d e f i n i s c o n o l ’ e q z . d i P o i s s o n . % OUTPUT : x g r i d , y g r i d , u g r i d : v e t t o r i c h e d e f i n i s c o n o g r i g l i a e s o l u z i o n e .

A=−g a l l e r y(’ p o i s s o n ’, n ) ; A=f u l l( A ) ; % MATRICE DI POISSON .

h =1/( n +1) ; x=(h : h:1−h ) ’ ; y=x ;

% CONTRIBUTI DI ” g ” AL TERMINE NOTO.

x _ l o c=x ; y _ l o c=z e r o s(s i z e( x_loc ) ) ; b_down=f e v a l( g_down , x_loc , y_loc ) ; % b a s s o

x _ l o c=x ; y _ l o c=o n e s (s i z e( x_loc ) ) ; b_up=f e v a l( g_up , x_loc , y_loc ) ; % a l t o

x _ l o c=z e r o s(s i z e( x ) ) ; y_loc=y ; b_left=f e v a l( g_left , x_loc , y_loc ) ; % s i n i s t r a

x _ l o c=o n e s (s i z e( x ) ) ; y _ l o c=y ; b _ r i g h t=f e v a l( g_right , x_loc , y_loc ) ; % d e s t r a % CONTRIBUTO TERMINE NOTO ” g ” : PRIMA E ULTIMA RIGHE

b1=b _ d o w n ; b1 ( 1 )=b1 ( 1 )+b _ l e f t ( 1 ) ; b1 ( n )=b1 ( n )+b _ r i g h t ( 1 ) ; % r i g a i n b a s s o

bn=b _ u p ; bn ( 1 )=bn ( 1 )+b _ l e f t ( n ) ; bn ( n )=bn ( n )+b _ r i g h t ( n ) ; % r i g a i n a l t o % CONTRIBUTO TERMINE NOTO ” g ” : RIGHE INTERMEDIE .

bj = [ ] ; f o r j = 2 : ( n−1)

b j l o c=z e r o s( n , 1 ) ; bjloc ( 1 )=b_left ( j ) ; bjloc ( n )=b _ r i g h t ( j ) ; bj =[ bj ; bjloc ] ; end

b_g =[ b1 ; bj ; bn ] ; % i l c o n t r i b u t o d i ” g ” a l t e r m i n e n o t o e ’ ”−b g ” . % GRIGLIA LESSICOGRAFICA (METODO STANDARD) .

l u n g h e z z a _ x=l e n g t h( x ) ; x_grid = [ ] ; y_grid = [ ] ; f o r i n d e x =1: l u n g h e z z a _ x

x _ g r i d =[ x _ g r i d ; x ] ; y _ g r i d =[ y _ g r i d ; y ( i n d e x )∗ones (s i z e( x ) ) ] ; end

% TERMINE NOTO ” b ”

f g r i d=f e v a l( f , x_grid , y_grid ) ; b_f =(h ˆ 2 )∗fgrid ; b=b_f−b_g ; % t e r m i n e n o t o ” b ” .

u _ g r i d=A\b ; % s o l u z i o n e n e i p u n t i d e l l a g r i g l i a

(12)

Equazione di Poisson: una implementazione.

Salviamo in

demopoisson5pts.m

la demo

f u n c t i o n d e m o p o i s s o n 5 p t s ( d e m o _ e x a m p l e ) s w i t c h d e m o _ e x a m p l e c a s e 1 f=@ ( x , y ) z e r o s(s i z e( x ) ) ; g _ d o w n=@ ( x , y ) o n e s (s i z e( x ) ) ; g_up=@ ( x , y ) ones (s i z e( x ) ) ; g _ l e f t=@ ( x , y ) o n e s (s i z e( x ) ) ; g _ r i g h t=@ ( x , y ) ones (s i z e( x ) ) ; s o l u t i o n=@ ( x , y ) o n e s (s i z e( x ) ) ; c a s e 2 f=@ ( x , y ) z e r o s(s i z e( x ) ) ;

g _ d o w n=@ ( x , y ) e x p(p i∗x ) ; g_up=@ ( x , y )−e x p(p i∗x ) ;

g _ l e f t=@ ( x , y ) c o s(p i∗y ) ; g_right=@ ( x , y ) ( (e x p( 1 ) ) ˆp i)∗c o s(p i∗y ) ; s o l u t i o n=@ ( x , y ) (e x p(p i∗x ) ) . ∗c o s(p i∗y ) ; c a s e 3 f=@ ( x , y ) (−2∗(p iˆ 2 ) )∗s i n(p i∗x ) . ∗s i n(p i∗y ) ; g _ d o w n=@ ( x , y ) z e r o s(s i z e( x ) ) ; g_up=@ ( x , y ) z e r o s(s i z e( x ) ) ; g _ l e f t=@ ( x , y ) z e r o s(s i z e( x ) ) ; g _ r i g h t=@ ( x , y ) z e r o s(s i z e( x ) ) ; s o l u t i o n=@ ( x , y ) (s i n(p i∗x ) ) . ∗s i n(p i∗y ) ; o t h e r w i s e f=@ ( x , y ) o n e s (s i z e( x ) ) ; g _ d o w n=@ ( x , y ) z e r o s(s i z e( x ) ) ; g_up=@ ( x , y ) z e r o s(s i z e( x ) ) ; g _ l e f t=@ ( x , y ) z e r o s(s i z e( x ) ) ; g _ r i g h t=@ ( x , y ) z e r o s(s i z e( x ) ) ; s o l u t i o n=@ ( x , y ) (s i n(p i∗x ) ) . ∗s i n(p i∗y ) ; end err = [ ] ; f o r n =[4 8 16 3 2 ]

[ x_grid , y_grid , u_grid ]= p o i s s o n 5 p t s ( n , f , g_left , g_right , g_down , g_up ) ;

s o l _ g r i d=f e v a l( solution , x_grid , y_grid ) ; err (end+1)=max(a b s( sol_grid−u_grid ) ) ; f p r i n t f(’ \n \ t [ n ] : %4.0 f [MAX. ERR . ] : %2.2 e ’, n , err (end) ) ;

(13)

Equazione di Poisson: qualit´

a dell’approssimazione.

Implementiamo il metodo sopra descritto, detto

a 5 punti

(cf. (3)).

Risulta importante ricordare la seguente stima dell’errore:

Teorema

Se

1

u `

e soluzione dell’equazione di Poisson (2) ed `

e almeno 4 volte differenziabile

con continuit`

a nel quadrato Ω := [0, 1] × [0, 1],

2

u

h

l’approssimazione ottenuta col metodo alle differenze con 5 punti, utilizzando

una griglia G = {(x

i

, y

j

)} con x

i

= i h, y

j

= j h, h = 1/(n + 1)

allora

|u(x

i

, y

j

) − u

h

(x

i

, y

j

)| ≤ ch

2

con

c = (1/24)



max

(x ,y )∈Ω

4

u(x , y )

∂x

4

+ max

(x ,y )∈Ω

4

u(x , y )

∂y

4



Ci si aspetta quindi dai test numerici che effettueremo un errore dell’ordine di h

2

.

(14)

Equazione di Poisson: esempio 1.

Esempio (1)

Approssimare la soluzione

u(x , y ) = 1

dell’equazione di Poisson nel

quadrato unitario Ω = [0, 1] × [0, 1]

(

2

u

∂x

2

+

2

u

∂y

2

= 0, (x , y ) ∈ Ω

u(x , y ) = 1, (x , y ) ∈ ∂Ω

(8)

mediante la formula a 5 punti.

Non `

e difficile osservare che

max

(x ,y )∈Ω

4

u(x , y )

∂x

4

= 0, max

(x ,y )∈Ω

4

u(x , y )

∂y

4

= 0

(15)

Equazione di Poisson: esempio 1.

Lanciamo da shell il primo esempio della demo, ottenendo

>> d e m o p o i s s o n 5 p t s ( 1 )

[ n ] :

4 [ MAX . ERR . ] :

3 . 3 3 e−16

[ n ] :

8 [ MAX . ERR . ] :

6 . 6 6 e−16

[ n ] :

16 [ MAX . ERR . ] :

3 . 5 5 e−15

[ n ] :

32 [ MAX . ERR . ] :

2 . 5 5 e−15

>>

Come previsto dalla stima, l’errore ´

e dell’ordine precisione di

macchina (in aritmetica esatta sarebbe nullo).

(16)

Equazione di Poisson: esempio 2.

Esempio (2)

Approssimare la soluzione

u(x , y ) = exp(π x ) · cos(π y )

dell’equazione di Poisson nel quadrato unitario Ω = [0, 1] × [0, 1]

2

u

∂x

2

+

2

u

∂y

2

= 0, (x , y ) ∈ Ω

u(x , 0) = exp(π x ), x ∈ [0, 1]

u(x , 1) = −exp(π x ), x ∈ [0, 1]

u(0, y ) = cos(π y ), y ∈ [0, 1]

u(1, y ) = exp(π) · cos(π y ), y ∈ [0, 1]

(9)

(17)

Equazione di Poisson: esempio 2.

0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 −30 −20 −10 0 10 20 30

Figura:

Soluzione del problema 2.

(18)

Equazione di Poisson: esempio 2.

Con qualche conto,

4

u

∂x

4

(x , y )

=

4

u

∂y

4

(x , y )

= π

4

|exp(π x) · cos(π y )|

e si nota subito che per x , y ∈ [0, 1] si ha

π

4

|exp(π x) · cos(π y )|

π

4

max

x ∈[0,1]

exp(π x ) max

x ∈[0,1]

| cos(π y )|

=

π

4

exp(π),

(10)

(19)

Equazione di Poisson: esempio 2.

Testiamo i risultati ottenuti in Matlab.

>>

% STIMA ERRORE

>>

f o r m a t

s h o r t e ;

c = 1 8 7 . 8 4 2 8 ; err = [ ] ;

>>

f o r

n =[4 8 16

3 2 ] , h =1/( n+1) ; err (

end+1)=c

∗h ˆ 2 ;

end

>> err ’

% s t i m a

d e l l ’ e r r o r e

p e r n = 4 , 8 , 1 6 . 3 2 .

a n s

=

7 . 5 1 3 7 e+00

2 . 3 1 9 0 e+00

6 . 4 9 9 8 e−01

1 . 7 2 4 9 e−01

>>

% SOLUZIONE NUMERICA ( STIMA CONSERVATIVA ! )

>> d e m o p o i s s o n 5 p t s ( 2 )

[ n ] :

4 [ MAX . ERR . ] :

9 . 7 5 e−02

[ n ] :

8 [ MAX . ERR . ] :

3 . 2 0 e−02

[ n ] :

16 [ MAX . ERR . ] :

9 . 0 5 e−03

[ n ] :

32 [ MAX . ERR . ] :

2 . 4 5 e−03

>>

Come ci si aspettava la maggiorazione `

e realizzata, ma purtroppo come stima `

e

abbastanza conservativa.

(20)

Equazione di Poisson: esempio 3.

Esempio (3)

Approssimare la soluzione

u(x , y ) = sin(π x ) sin(π y )

dell’equazione di Poisson nel quadrato unitario Ω = [0, 1] × [0, 1]

2

u

∂x

2

+

2

u

∂y

2

= (−2 π

2

) sin(π x ) sin(π y ), (x , y ) ∈ Ω

u(x , 0) = 0, x ∈ [0, 1]

u(x , 1) = 0, x ∈ [0, 1]

u(0, y ) = 0, y ∈ [0, 1]

u(1, y ) = 0, y ∈ [0, 1]

(11)

(21)

Equazione di Poisson: esempio 3.

0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 1.2 1.4

Figura:

Soluzione del problema 3.

(22)

Equazione di Poisson: esempio 2.

Con qualche conto,

4

u

∂x

4

(x , y )

=

4

u

∂y

4

(x , y )

= π

4

|sin(π x) · sin(π y )|

e si nota subito che per x , y ∈ [0, 1] si ha

π

4

|sin(π x) · sin(π y )| |

π

4

(12)

e che in effetti tale massimo si ottiene in P = (1/2, 1/2) ∈ Ω. Quindi

(23)

Equazione di Poisson: esempio 3.

Visto che

c ≈ 8.1174

abbiamo

>>% STIMA DELL ’ ERRORE

>> f o r m a t s h o r t e ; c = 8 . 1 1 7 4 ; err = [ ] ;

>> f o r n =[4 8 16 3 2 ] , h =1/( n+1) ; err (end+1)=c∗h ˆ 2 ; end >> err ’ % s t i m a d e l l ’ e r r o r e p e r n = 4 , 8 , 1 6 . 3 2 . a n s = 3 . 2 4 7 0 e−01 1 . 0 0 2 1 e−01 2 . 8 0 8 8 e−02 7 . 4 5 4 0 e−03

>>% SOLUZIONE NUMERICA ( STIMA ABBASTANZA PRECISA ) .

>> d e m o p o i s s o n 5 p t s ( 3 )

[ n ] : 4 [ MAX . ERR . ] : 3 . 0 4 e−02 [ n ] : 8 [ MAX . ERR . ] : 9 . 9 1 e−03 [ n ] : 16 [ MAX . ERR . ] : 2 . 8 3 e−03 [ n ] : 32 [ MAX . ERR . ] : 7 . 5 4 e−04 >>

Rispetto al caso precedente la stima `

e pi`

u precisa, e la ratio di circa 4 ci dice

che la convergenza `

e ancora dell’ordine di h

2

.

(24)

Il comando reshape (facoltativo)

Un importante comando Matlab `

e

reshape

. Dall’

help

di Matlab

>> h e l p r e s h a p e r e s h a p e R e s h a p e a r r a y .

r e s h a p e( X , M , N ) or r e s h a p e( X , [ M , N ] ) r e t u r n s the M−by−N matrix w h o s e e l e m e n t s are t a k e n c o l u m n w i s e f r o m X . An e r r o r r e s u l t s i f X d o e s not h a v e M∗N elements .

. . . . >>

Il comando, da un vettore

x

di dimensione m · n × 1, produce una

matrice di dimensione m × n, i cui elementi sono tratti da

x

.

(25)

Bibliografia

V. Comincioli, Analisi Numerica, metodi modelli applicazioni, Mc Graw-Hill, 1990.

Riferimenti

Documenti correlati

Altre informazioni possono essere ottenute contattando i docenti per posta elettronica agli indirizzi.

Comincioli, Analisi Numerica, metodi modelli applicazioni, Mc

, n (soluzione numerica nei punti della griglia immagazzinata in un vettore, seguendo un opportuno ordinamento (infor- malmente ”da sinistra a destra, partendo dal basso verso

Grafico che illustra in scala semilogaritmica l’errore assoluto compiuto dalla formula ( 2.9 ) per il calcolo del laplaciano della funzione g(x, y) nel punto (0, 0), utilizzando

this, MESHGRID is better suited to problems in cartesian space, while NDGRID is better suited to N-D problems that aren’t

E possibile utilizzare la gallery di Matlab, per determinare la generica matrice di Poisson, composta da n blocchi, ognuno n × n... Equazione di Poisson: un

La Barbera Mauro “Sistemi” 1... La Barbera Mauro

Tuttavia, al di l` a della determinazione univoca o meno dei parametri in gioco, possiamo trovare al- cune peculiarit` a dei condensati di Bose-Einstein che discendono