You are on page 1of 29

ANALISI NUMERICA Equazione del calore e delle onde

Andrea Guglielmi May 29, 2011

Cenni sulle PDE

In questo breve paragrafo verr fornita una minima introduzione riguardo alle equazioni dierenziali alle derivate parziali, concentrandosi sulle notazioni e sulla nomenclatura ad esse relative. Questo permetter di addentrarci al meglio nella comprensione dei metodi numerici utilizzati per la risoluzione di due delle principali equazioni differenziali a derivate parziali (PDE): l'equazione del calore e l'equazione

delle onde. Verranno presentati alcuni metodi numerici per la risoluzione di quest'ultime concentrandosi sull'implementazione in ambiente

Matlab R

Senza essere troppo puntigliosi si pu pensare alle equazioni dierenziali a derivate parziali (PDE), come ad ordinarie equazioni dierenziali (ODE) , con l'eccezione che la funzione interessata non funzione solo di una variabile indipendente, ma di diverse variabili. Per essere pi precisi una PDE in contiene derivate parziali della

u = u(x1 , . . . , xn ) funzione u relative a

una equazione che una o pi incognite

x1 , . . . , x n .
Notazione

Introduciamo la seguente notazione ridotta relative alle derivate parziali per brevit di esposizione:

ux =
di derivazione da sinistra a destra:

u x

Allo stesso modo, indichiamo le derivate di ordine superiore, leggendo l'ordine

uxxy =

3u x2 y

Per il contesto in cui lavoreremo, ovvero per poter vedere sviluppi numerici delle equazioni dierenziali, non ci interesser l'ordine in cui sono state eseguite le derivate perziali. L'

ordine

di una PDE il massimo ordine delle derivate che gura tra i ter-

mini dell'equazione.

Catalogazione delle equazioni di secondo ordine

La forma standard

di una equazione dierenziale alle derivate parziali di secondo ordine in due varibili indipendenti :

Auxx + 2Buxt + Cutt = F (x, t, u, ux , ut )


dove di

u(x, t) la funzione incognita, e F (x, t, u, ux , ut ) una funzione arbitraria x, t ed lineare in u e nelle sue derivate parziali prime.
ellitiche,

Le equazioni dierenziali vengono classicate in tre diversi tipi:


paraboliche e iperboliche.

Questa distinzione viene fatta considerando la

quantit

(B 2 AC): <0 B 2 AC = 0 >0


Ellitica Parabolica Iperbolica

Introduciamo quelle che vengono chiamate le tre equazioni dierenziali fondamentali, per via della loro importanza nello sviluppo storico e dei problemi sici ad esse legate: l'equazione delle onde . Queste equazioni sono rispettivamente di tipo ellitico, parabolico ed iperbolico e vengono associate a diversi problemi sici. l'equazione Laplaciana, l'equazione del calore e

Condizioni iniziali e condizioni al contorno

Le condizioni per ottenere

una soluzione particolare di una PDE spesso nascono dal particolare problema sico che si intende risolvere, e si possono distinguere in due tipi: condizioni iniziali e condizioni al contorno. In questo elenco le condizioni

che presentiamo si riferiscono al caso monodimensionale su cui ci concentreremo in seguito. Le prime date fornendo:

u(x, t0 ) = f (x)
2

xI

(1)

dove generalmente t0 posto uguale a 0 e questo particolare esempio

rappresenta un intervallo di R,in

[0, L]. u(0, t) = u0 t>0

Le condizione al contorno possono invece essere: (2)

oppure

ux (L, t) = 0

t>0

(3)

Pi in generale in letteratura vengono individuati alcuni tipi di notazioni standard per indicare particolari condizioni al contorno del problema:
Dirichlet Sono forniti i valori della funzione

u solamente su parte del bordo

Neumann Sono forniti solo i valori delle derivate normali della funzione su

parte del bordo


Cauchy I valori sia della funzione che delle derivate normali sono forniti

sulla stessa parte di bordo.


Robin fornita un'espressione lineare omognea che coinvolge la derivata

della funzione e la funzione stessa.

Equazione del calore

L'esempio classico da cui partiremo per introdurre l'equazione del calore quello di una sbarra in metallo all'interno della quale si sviluppa un usso di calore. Consideriamo una sbarra di metallo la cui sezione trascurabile rispetto

Figure 1: Sbarra di lunghezza L

alla sua lunghezza, pensiamo inoltre questa sbarra posizionata nello spazio in modo che i suoi estremi giacciano entrambi sull'asse di sinistra ha ascissa

x,

dove l'estremo

e quello di destra

L.

Quello che vogliamo fare

determinare la funzione della temperatura:

u(x, t) =

temperatura nel punto

all'istante

Per cercare di modellizzare questa situazione, si pu considerare la quantit di calore contenuta in un elemento di lunghezza

(in qualunque istante)

proporzionale alla sua temperatura e alla sua lunghezza. Allora la velocit con cui il calore entra nell'elemento dato dalla derivata di rispetto al tempo relativa all'elemento di lunghezza

x: (ux) = ut x t

velocit

Un altro modo per calcolare questa velocit considerare la quantit di calore che uisce attraverso i due estremi della porzione di sbarra considerata. Questo possibile assumendo che la sbarra sia isolata per tutta la sua lunghezza fatta eccezione per gli estremi. Risulta quindi che la velocit con cui il calore entra nell'elemento (porzione di sbarra tra

x + x)

q.ta calore entrante dal lato dx + q.ta calore entrante dal lato sx

ux (x + x, t) ux (x, t)
Dall'unione delle due espressioni si ha:

ut x ux (x + x, t) ux (x, t) ut
e portando al limite per

ux (x+x,t)ux (x,t) x
si ottiene:

x 0 ut ut =

uxx
costante

uxx

Ottenendo cos l'equazione del calore:

ut = 2 uxx
dove

(4)

detta

diusivit termica.

Condizioni per l'equazione del calore

Anch il problema sia ben

posto, ovvero anch esista una unica soluzione e il problema sia stabile , bisogna che sia fornita una condizione iniziale come quella fornita in 1 e due condizioni al contorno riguardo ai due estremi della sbarra, 2 e lema:
Dirichlet viene specicata la temperatura/concentrazione in un estremo:

u(L, t) = uL .

Diamo ora una breve nomenclatura per le condizioni al contorno del prob-

omogenea se:

u(0, t) = 0,
o

t t0 t t0 t t0 t t0

u(L, t) = 0,
non omogenea:

u(0, t) = g1 (t),
o

u(L, t) = g2 (t),
Neumann usso specicato a un estremo:

omogenea se:

ux (0, t) = 0,
o

t > t0 t > t0

ux (L, t) = 0,
non omogenea:

kux (0, t) = g1 (t),


o

t > t0 t > t0

kux (L, t) = g2 (t),

1 Per dare un'idea non rigorosa di stabilit si pu pensare che risulta stabile se qualora
vengano cambiate le condizioni iniziali o al contorno di poco, allora anche la soluzione cambia, ma solo di poco, dove possibile quanticare quello che intendiamo con un poco.

Robin un estremo in contatto con un materiale mantenuto a temperatura/concentrazione

costante:

omogenea se:

kux (0, t) = h[u(0, t) 0],


o

t > t0 t > t0

kux (L, t) = h[u(L, t) 0],


non omogenea:

kux (0, t) = h[u(0, t) g1 (t)],


o

t > t0 t > t0

kux (L, t) = h[u(L, t) g2 (t)],


dove

chiamato

coeciente di scambio del calore.


La conduzione del calore

Altre applicazioni dell'equazione del calore

un esempio specico di un processo di diusione, infatti il calore si dionde attraverso la sbarra, proprio come una goccia di inchiostro si dionde in un bicchiere d'acqua. In generale diondendo. Nel caso pi generale l'equazione 4 assume la forma: per unit di volume), nel punto

u(x, t) rappresenta la concentrazione (massa x all'istante t, di qualunque cosa si stia

ut = kuxx
dove

chiamato

coeciente di diusione.
rappresentano la corrente e il voltaggio in un lungo cavo

Corrente elettrica in un lungo, cavo isolato

Se

i(x, t)

E(x, t)

isolato, si pu mostrare che sia


telegrafo:

che

debbano soddisfare l'equazione del (5)

uxx = LCutt + (RC + LG)ut + RGu


dove le costanti allora sia

L, C , R

rappresentano rispettivamente l'induttanza, ,la

resistenza, la capacit e la conduttanza. Nel caso in cui

siano nulli

che

devono soddisfare:

uxx = RCut
6

Finanza matematica- l'equazione di Black-Scholes

Nello studio del prezzo delle opzioni un modello molto importante e relativamente nuovo (1973) va sotto il nome di equazione di Black-Scholes

2 s2 Vss + rsVs rV + Vt = 0 2
Dove, volatilit del bene e

V = V (s, t), t il tempo, s il valore del bene opzionato, r la costante tasso di interesse.

la costante di

L'equazione risulta separabile ed possibile attraverso un cambio di variabile ritornare all'equazione del calore

u =

2 uxx 2
Per risolvere

Risoluzione attraverso la separazione delle variabili

esplicitamente l'equazione del calore possibile ricorre alla tecnica di separazione delle variabili che permette di dare una soluzione a una PDE lineare ed omogenea,trasformandola in un certo numero di ODE, corrispondenti al numero di variabili indipendenti. Consideriamo il problema:

ut = 2 uxx u(x, 0) = f (x) u(0, t) = u(, t)


Ipotizzando che

u(x, t) = X(x)T (t)

allora l'equazione del calore diventa:

XT = 2 T X
T 2 T

X X

con

costante per lo stesso

T + 2 T = 0,

X + X = 0

Le condizioni al contorno ci dicono che:

X(0)T (t) = X()T (t) = 0


se

T (t) 0

allora questo porta ad ottenere come soluzione,

identicamente

nulla, altrimenti:

X(0) = X() = 0
7

Si ha cos da risolvere un equazione dierenziale ordinaria con condizioni al contorno:

X + X = 0 X(0) = X() = 0
Risolvendo il problema degli autovalori e delle autofunzioni, si ha che per

non ci sono autovalori e l'unica soluzione ammissibile del problema

quella identicamente nulla. Per

>0

si ha invece:

n = n2

Xn (x) = sin(nx) n = 1, 2, . . .
per

autovalori e autofunzioni del problema, questi sono gli unici valori di cui il problema riguardante la variabile

non ha soluzione identicamente

nulla. Non ci rimane ora che risolvere l'equazione dierenziale ordinaria in

sostituendo i valori

appena trovati. Si ha cos:

T + 2 n T = 0
Ottenendo come soluzione

Tn (t) = e(n) t ,

n = 1, 2, . . . n
la soluzione prodotto data

Risulta cos che per uno specico autovalore

dal problema iniziale, sottoposto solo alla condizione al contorno risulti: 2 un (x, t) = e(n) t sin(nx). Per il principio di sovrapposizione, visto che la PDE e che le condizioni al contorno sono omogenee, ogni qualsiasi combinazione lineare di queste funzioni soluzione del problema soggetto solo alle condizioni al contorno, questa detta soluzione generale.

u(x, t) =
n=1

cn e(n) t sin(nx)
2

Ricordando che sotto opportune ipotesi di continuit ogni funzione, f (x) esprimibile come serie di fourier f (x) = cn sin(nx). Si possono cos n=1

2 Anch

sia il limite di una serie di fourier deve ammettere derivata prima continua

a tratti, ovvero deve essere liscia a tratti.f (x) con seguenti propriet valgono sia per

a x b

si dice

liscia a tratti

se le

che per

ha un numero nito di discontinutit in ogni punto di discontinuit il limite sinistro e destro esistono e sono niti il limite destro di

e quello sinistro di

esistono e sono niti

calcolare i coecienti come soluzione:

cn . f (x) = 2 sin(x) 5 sin(3x)


2

Questo si pu facilmente vedere nel caso

che da

u(x, t) = 2e t sin(x) 5e9 t sin(3x)


Abbiamo cos mostrato come risolvere esplicitamente, in casi semplici, l'equazione del calore, mostreremo pi avanti anche una possibile implementazione e risoluzione attraverso

Matlab R

di problemi simili.

Equazione delle onde

Una semplice situazione che si intende modellizzare facendo riferimento all'equazione delle onde quella data da un lo vibrante di sezione trascurabile rispetto alla lunghezza. Consideriamo infatti un lo, perfettamente essibile, di lunghezza estremi sono ssati sull'asse

e i cui

nell'origine e in

(L, 0),

ai quali il lo vinco-

lato. Il movimento del lo descritto dalla funzione:

u(x, t) =

altezza del lo nel punto

all'istante

Con questa modellizzazione assumiamo implicitamente che ogni punto del lo si pu muovere solo lungo la direzione

u e che il moto ristretto al piano

xu.
Ora procediamo in modo analogo a come si fatto per l'equazione del calore, consideriamo un tratto del lo di lunghezza legge di Newton

e applichiamo la seconda Osserviamo che l'unica

al movimento verticale del lo.

Figure 2: Filo su cui agisce la tensione T agli estremi forza che agisce su un elemento la tensione, che per l'ipotesi di perfetta essibilit rimane costante su tutto il lo. nell'estremo di sinistra e la pendenza del lo, si Indicando con destra.

la tensione si

ha che le componenti verticali agenti sulla tensione sono date da

T sin 2 nell'estremo di ha che tan 1 = ux (x, t)


F = ma
dove con

Questo da una relazione non lineare tra gli

T sin 1 ux , e tan 2 = ux (x + x, t). angoli 1 e 2 , e la funzione u.


Considerando

3 La seconda legge di newton:


accelerazione

si indica la forza,

la massa e

10

Per ottenere una relazione lineare, assumendo che approssimare servendosi di Taylor

ux

sia piccolo possibile

T sin 1 T ux (x, t)
risulta:

T sin 2 T ux (x + x, t)

La somma dei contributi verticali della forza agenti su un elemento del lo

T [ux (x + x, t) ux (x, t)]


La massa dell'elemento

(6)

x,

dove

una costante che indica la densit

di massa per unit di lunghezza;

utt

l'accelerazione in ogni punto, allora

possibile approssimare massa per accellerazione dell'elemento del lo come:

xutt x +

x ,t 2

(7)

Applicando ora la seconda legge di Newton all'elemento del lo, unendo quindi le equazioni 6 e 7 si ha:

xutt x +
e dividendo per

x , t = T [ux (x + x, t) ux (x, t)] 2


si ottiene l'equazione delle onde:

x 0,

utt = c2 uxx
dove

(8)

c=

T detto

velocit d'onda.

Osserviamo che in questa modellizzazione non si tenuto conto della forza di gravit.

Condizioni per l'equazione delle onde

Anch l'equazione delle onde

abbia soluzione, sono necessarie due condizioni iniziali e due condizioni al contorno, le condizioni iniziali sono della forma:

u(x, t0 ) = f (x), ut (x, t0 ) = g(x),

0xL 0xL

Risulta che le condizioni al contorno del tipo Dirichlet, Neumann e Robin sono applicabili all'equazione delle onde. Le pi comuni condizioni utilizzate per il problema del lo vibrante sono:

tan = 3 3 + 3 + . . . e sin = 3 + . . . avendo quindi, a meno di un errore dell'ordine di O(3 ), sin tan . Questo metodo di approssimazione viene spesso indicato in letteratura
come metodo delle piccole oscillazioni

4 Ricordiamo lo sviluppo in serie di Taylor (pi precisamente di McLaurin) di

11

Dirichlet omogenee Neumann omogenee

u(0, t) = 0 ux (0, t) = 0

o o

u(L, t) = 0 t > t0 ux (L, t) = 0 t > t0

Il signicato sico della prima si pu facilmente immaginare considerando i capi del lo bloccati, mentre della seconda da intendersi come se negli estremi non c' nessuna forza che fa variare la pendenza del lo.

Altre applicazioni dell'equazione delle onde

L'equazione delle onde

viene utilizzata per modellizzare anche altre situazioni oltre a quella di un lo vibrante.

Vibrazioni longitudinali di una sbarra

Consideriamo una sbarra simile a quella utilizzata nella derivazione dell'equazione del calore e pensiamo di ssarne un estremo a una parete e di prenderla a martellate dall'altro. Attraverso ogni sezione verticale ci sar una vibrazione orizzontale, indicando con

u(x, t) =

lo spostamento di una sezione verticale

che originariamente si trova nel punto

x all'istante t, allora u deve soddisfare:

utt = kuxx
dove la costante

modulo di Young.

la misura di quanto elastica la sbarra ed chiamata

Vibrazione torsionale di una sbarra

Si prenda una sbarra come nel caso precedente e si consideri che le sezioni verticali siano circolari, e invece di colpirla con un martello, la si attorcigli e poi si rilasci. Considerando:

(x, t) =

angolo di rotazione della sezione verticale in

x,

all'istante

Si ottiene cos :

tt = c2 uxx
dove

c2 =

G ,

densit e G detto modulo sollecitazione di taglio del materiale.

Corrente elettrica in un lungo cavo isolato

Ricordandoci l'equazione del telegrafo 5 che vale per la corrente

i e il voltaggio

E. uxx = LCutt + (RC + LG)ut + RGu

12

Se

sono uguali a zero, che risulta quando si lavora con alte frequenze,

allora sia

che

devono soddisfare:

uxx = LCutt
Risoluzione attraverso la separazione delle variabili

Adottiamo lo

stesso metodo utilizzato nella sezione precedente per risolvere ora l'equazione delle onde. Consideriamo il problema:

utt = c2 uxx u(x, 0) = f (x) ut (x, 0) = g(x) u(0, t) = u(1, t) = 0


Iniziamo considerando

u(x, y) = X(x)T (t)

allora si ha:

XT = c2 X T
T c2 T

X X

= T + c2 T = 0

X + X = 0,
dizioni al contorno per la

Ragionando come nel caso dell'equazione del calore ottengo le seguenti con-

X: X(0) = X(1) = 0

Risolviamo il problema degli autovalori rispetto alla X ed otteniamo: autovalori autofunzioni Ora risolviamo l'equazione in

n = n2 2 Xn = sin(nx) n = 1, 2, . . . T
per

= n

ed otteniamo cos qualcosa di

diverso rispetto a quello trovato per l'equazione del calore:

T + c2 n T = 0 T + c2 n 2 2 T = 0 T (t) = c1 cos(cnt) + c2 sin(cnt)


Otteniamo cos per ogni intero

n:

Tn (t) = cn cos(cnt) + dn sin(cnt)


13

La nostra soluzione generale risulta come combinazione lineare:

u(x, t) =
n=1

sin(nx)(cn cos(cnt) + dn sin(cnt))

(9)

Prima di poter applicare le condizioni al contorno dobbiamo calcolare

ut :

ut (x, t) =
n=1

sin(nx)[cncn sin(cnt) + cndn cos(cnt)] f (x) e g(x) espresse come serie dn ed ottenere cos la soluzione.
di fourier per cal-

Ora possibile utilizzare colare i coecienti

cn

Portiamo ora un altro esempio notevole, che permette di descrivere un'altra situazione sica, quella di un lo che non vibra, ma continua a muoversi verticalmente ad una certa velocit iniziale senza cambiare forma, mostriamo brevemente che anche in questo caso si possono far valere le considerazioni del caso precedente.

utt = uxx u(x, 0) = 0 ut (x, 0) = 1 ux (0, t) = ux (, t) = 0


Applicando il metodo di separazione delle variabili si ottiene:

(10)

X + X = 0, T + T = 0 X (0) = X () = 0
Risolvendo il problema degli autovalori di X: autovalori: autofunzioni:

0 = 0, n = n2 n = 1, 2, . . . X0 (x) = 1, Xn (x) = cos(nx) n = 1, 2, . . . n :

Risolviamo l'equazione in T per i valori trovati di per per

0 = 0: n = n2 :

T = 0 T0 (t) = c0 + d0 t T + n T = 0 Tn (t) = cn cos(nt) + dn sin(nt) n = 1, 2, . . .


2

La soluzione del problema della forma sommando le singole soluzioni si ottiene:

Xn (x)Tn (t)

per ogni autovalore,

u(x, t) = c0 + d0 t +
n=1

cos(nx)[cn cos(nt) + dn sin(nt)]


14

Tenendo conto delle condizioni iniziali possibile calcolare i coecienti

cn

dn

trovando la soluzione del problema iniziale:

u(x, t) = t
Ho cos trovato che il lo non vibra, ma al contrario mantiene la sua forma iniziale che si muove lungo il lo a velocit costante pari a uno.

15

Metodi numerici con Matlab R

In questa sezione ci focalizzeremo sui metodi numerici per risolvere l'equazione del calore e quella delle onde, concentrandoci su pochi metodi che sono preferibili per stabilit e convergenza.

4.1

L'equazione del calore

Partiamo con l'idea di voler discretizzare l'equazione del calore 4:

ut = k 2 uxx
Per farlo iniziamo utilizzando l'approssimazione di mare

ut

considerata secondo un

classico schema esplicito di dierenza, e una dierenza centrata per approssi-

uxx : ui+1,j 2ui,j + ui1,j ui,j+1 ui,j = k2 + Ti,j (x, t) t (x)2


(11)

u calcolata nei due nodi xi , tj ; Ti,j 2 invece l'errore locale di troncatura O[t+(x) ] (l'errore che viene commesso al passo i, j ).
Dove indica la funzione Lo schema risulta consistente ntanto che:

ui,j = u(xi , tj )

x0,t0

lim

Ti,j (x, t) = 0

Questo metodo risulta esplicito rispetto al tempo poich la derivata seconda calcolata per valori essere riscritta come:

tj

del tempo, lavorando sul'equazione 11, questa pu

ui,j+1 =
ovvero esprimendo dente (tj ).

k 2 t 2k 2 t k 2 t ui+1,j + 1 ui1,j ui,j + (x)2 (x)2 (x)2

(12)

ui,j+1 in funzione dei termini di u calcolati al tempo preceu


in

Si pu quindi vedere come sia possibile marciare passo dopo

passo lungo la direzione temporale, sapendo i valori di partenza di Si dice che le quantit schema appena esposto. In pratica dobbiamo scegliere valori per valori per

t0 .

ui,j+1 , ui1,j , ui,j

ui1,j

formano lo stencil per lo

x e t, in modo da dare un passo

temporale e uno spaziale al metodo per farlo procedere. La scelta di piccoli

ridurranno l'errore locale di troncatura, mentre invece

scegliendo valori grandi di

si riduce sia il numero di volte per cui l'errore

locale di arrotondamento viene accumulato, sia il tempo di esecuzione delle

16

Figure 3: Stencil relativo al metodo esplicito per equazione del calore

operazioni. Bisogna per tenere conto del rapporto prendere che se

k2 t ed intuitivo com(x)2
Ricor-

(x)2

molto pi piccolo di

t,

allora il coeciente sopra

pu essere troppo grande e portare a un comportamento instabile. dierenziali ordinarie:

dando le limitazioni del metodo esplicito di eulero applicato alle equazioni

t < 2 min
m
dove

Red,m |d,m |2 Ad
ottenuta attraverso

d,m

sono gli autovalori complessi della matrice

il metodo delle delle dierenze nite considerando lo spazio funzionale di approssimazione di dimensione Nel nostro caso la matrice

d. Ad

simmetrica, denita positiva e quindi pos-

, dove a e b (x)2 sono gli estremi dell'intervallo su cui si vuole calcolare l'equazione, e che d,m sibile riscrivere la formula esplicita di massimo si ha per

d,m =

2 cos(mx/(ba))

m = d.

Da queste considerazioni si ottiene:

2 1 = 2 (x)2 k 2 |d,d | 2k k 2 t 1 2 (x) 2


(13)

Si noti che questa scelta garantisce che i valori dei coecienti siano non neg1 ativi e che il fattore non dipenda dalle unit o dalla scala utilizzata. 2 La restrizione cos trovata risulta per particolarmente severa. Infatti t a causa della limitazione deve essere preso piccolo, costringendo cos il metodo a numerose valutazioni lungo la direzione di t, quindi per quanto detto prima ad aumentare la complessit computazionale e a sommare numerosi errori di

17

arrotondamento locali. Tutto questo rende il metodo abbastanza impraticabile. Questo metodo risulta per di semplice implementazione, una volta scelto adeguatamente il rapporto 13, la condizione iniziale:

u(x, 0) = f (x)
ci da come informazione

u(xi , 0) = ui,0 = f (xi )

i = 0, 1, 2, . . . , n

mentre le condizioni al contorno di Dirichlet:

u(0, t) = u(a, t) = 0
danno le seguenti equazioni:

u(0, tj ) = u0,j = u(L, tj ) = un,j = 0

j = 0, 1, . . .

Se invece si hanno condizioni al contorno di tipo Neumann o Robin, si procede utilizzando la dierenza in avanti, centrata o all'indietro per approssimare la derivata nella condizione al contorno. Fintanto che l'errore locale di tronca2 mento dell'ordine di O[t + (x) ] prassi scegliere l'approssimazione al bordo in modo che sia consistente con quest'errore. Cos scegliamo di utilizzare la dierenza centrata per avere un errore di troncatura dell'ordine di O[(x)2 ]Questo naturalmente comporta l'introduzione di punti fantasma :

u(x, tj ) = u1,j
permettendoci cos di scrivere:

u(L + x, tj ) = un+1,j

un+1,j un1,j ux (L, tj ) 2x Questa condizione insieme alla PDE calcolata per x1 o xn+1 da luogo sistema con n + 1 equazioni per ogni istante temporale tj . u1,j u1,j ux (0, tj ) 2x
o sistema di

a un

Riprendiamo invece il caso di condizioni iniziali di tipo Dirichlet, si ha un

(n 1)m

equazioni:

ui,j+1 = ui+1,j + (1 2 )ui,j + ui1,j ,


Dove,

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

k2 t . (x)2 Naturalmente non necessario risolvere tutte le equazioni contemporanea-

mente, visto che possibile marciare  lungo la variabile temporale, utilizzando i risultati della jesima riga per calcolare quelli della (j + 1)esima. Scegliendo = 1 , si ottiene lo schema esplicito di Bender-Schmidt: 2

1 ui,j+1 = (ui+1,j + ui1,j ) 2


18

(14)

Naturalmente esistono molti altri schemi espliciti per la risoluzione dell'equazione del calore, ma tutti quanti presentano forti limitazioni dovuti al rapporto 13.
Lo schema implicito di Crank-Nicolson

Cerchiamo ora uno schema che risulti stabile per ogni scelta di scegliamo cos il seguente schema implicito:

k2 t , (x)2

ui,j+1 ui,j t

i,j k 2 a i+1,j (x)2 i1,j + u 2ui,j+1 +u +(1 a) i+1,j+1 (x)2 i1,j+1

2u

+u

Dove

approssimazioni di

0 < a < 1 e il membro di destra altro non che una media pesata delle uxx (xi , tj ) e uxx (xi , tj+1 ). 1 Risulta inoltre che scegliendo 0 < a lo schema risulta stabile, senza nes2 suna limitazione sui passi t e x. Lo stencil pu essere visto nella gura 4.
Per diversi motivi, la forma pi utilizzata dello schema Crank-Nicolson

Figure 4: Stencil relativo al metodo implicito Crank-Nicolson quello in cui

a=

1 : 2
(15)

(1 + )ui,j+1 = (1 )ui,j + (ui+1,j+1 + ui1,j+1 + ui+1,j + ui1,j ) 2


Dove

k2 t (x)2

19

Figure 5: Stencil relativo al metodo esplicito per l'equazione delle onde

4.2

L'equazione delle onde

Ricordiamo l'equazione delle onde 8

utt = c2 uxx
Sembra ragionevole approssimare le due derivate seconde con la dierenza centrata in modo da rendere lo schema:

ui,j+1 2ui,j + ui,j1 ui+1,j 2ui,j + ui1,j = c2 + Tij (x, t) (t)2 (x)2
esprimendo

(16)

ui,j+1

in funzione degli altri termini risulta: (17)

ui,j+1 = ui+1,j + 2(1 )ui,j + ui1,j ui,j1


Dove

ct 2 . Si pu suppore che anch il metodo risulti stabile sia x necessario che 1 0, ed eettivamente cos. Questa condizione meglio

nota con il nome di condizione Courant calore, infatti

Friedrichs

Lewy. Questa restizione

non risulta essere cos severa come quella del caso esplicito dell'equazione del

t
nanzi tutto se

x c 1.

(18) In-

Si pu inoltre fare considerazioni grache sulla restrizione

=1

allora

ct = x

e le caratteristiche attraverso il punto

(xi , tj+1 )
Se invece dominio

passano direttamente per i punti

(xi1 , tj )

(xi+1 , tj ).

siamo quindi dire che il domino

analitico di dipendenza un sottinsieme del numerico di dipendenza. Questo ci dice che le perturbazioni devono
20

<1

allora le linee caratteristiche passano tra questi punti. Pos-

Figure 6: In nero si possono vedere le linee caratteristiche per tratteggiato invece le linee caratteristiche per analitico di dipendenza e in nero quello numerico

c=1,

in rosso

< 1.

In rosso il dominio

propagarsi attraverso lo schema numerico a una velocit schema stabile. Le condizioni iniziali:

per avere uno

u(x, 0) = f (x)
ci danno, come nel caso dell'equazione del calore,

ui,0 = f (xi )

i = 0, 1, . . . , n

La seconda condizione iniziale coinvolge le derivate rispetto al tempo:

ut (x, 0) = g(x)
Fintanto che lo schema esplicito

O[(t)2 + (x)2 ], scegliamo ancora la dierenza centrata per approssimare ut . Introduciamo cos i punti fantasma: u(xi , t) = ui,1 i = 0, 1, . . . , n

Ci sono naturalmente anche schemi impliciti per l'equazione delle onde. Visto e considerato che la condizione di stabilit per lo schema esplicito non particolarmente forte e ci permette di essere essibili nella nostra scelta della griglia, non fondamentale trovare alternative allo schema.

21

Esempi con Matlab R


Matlab R

In questa ultima sezione presentiamo alcune implementazioni su per la risoluzione dell'equazione del calore e delle onde.

Equazione del calore metodo esplicito

Presentiamo un possibile le .m per risolvere l'equazione del calore con il metodo esplicito. Come gi discusso in precedenza si nota che il metodo sottoposto alla condizione 13 anch risulti stabile, se tale condizione viene violata, il programma si limita a segnalarlo. Le condizioni utilizzate dal codice sono di Dirichlet, per utilizzare altri tipi di condizioni al contorno necessario utilizzare una approssimazione calcolata per mezzo di una dierenza centrata. %Metodo esplicito equazione del calore: d=input('inserire coeciente diusivit: '); n=100; %passi direzione x punti in cui si valuta u nt=400;%passi direzione t L=4; %lunghezza barra x=linspace(0, L,n); dx=L/n; dt=20; k=d*dt/(dx)^2; %controllo convergenza if(k>0.5) fprintf('Attenzione metodo instabile'); end A=sparse(diag((1-2*k)*ones(n,1))+diag(k*ones(n-1,1),1)+diag(k*ones(n-1,1),-1)); t=0; U=condinz(x); % condizioni iniziali i=1; plot(x,U); hold on while t<(nt*dt) f0=latosx(t); % condizione sul bordo sx fL=latodx(t); % condizione sul bordo dx u=A*(U(i,:))`+k*[f0; zeros(n-2,1); fL]; U=[U;u`]; i=i+1; t=t+dt; if(mod(i,4)==1)

22

plot(x,u,`r');pause(.2) end end gure(2); mesh(x,[0:dt:nt*dt],U);

Equazione del calore metodo implicito Crank-Nicolson

Per quel che riguarda il metodo implicito di Crank-Nicolson riportiamo un le .m che permette di vedere l'implementazione utilizzata, il vantaggio di questo metodo rispetto al precedente consiste, come gi considerato in precedenza, nel non avere condizioni sul passo

t. a
del

Come nel caso precedente stata implementata per un problema con condizioni al contorno del tipo Dirichlet e considerando come costante 1 metodo , si veda l'equazione 15. 2 %Metodo implicito (Crank-Nicolson) equazione del calore: d=input('inserire coeciente diusivit: '); n=100; %passi direzione x punti in cui si valuta u nt=400;%passi direzione t L=4; %lunghezza barra x=linspace(0, L,n); dx=L/n; dt=20; k=d*dt/(dx)^2; Ap=sparse(diag((1+k)*ones(n,1))-diag((k/2)*ones(n-1,1),1)... -diag((k/2)*ones(n-1,1),-1)); Am=sparse(diag((1-k)*ones(n,1))+diag((k/2)*ones(n-1,1),1)... +diag((k/2)*ones(n-1,1),-1)); t=0; U=condinz(x); i=1; plot(x,U); hold on while t<(nt*dt) f0=latosx(t); fL=latodx(t); u=Ap\(Am*U(i,:)'+k*[f0; zeros(n-2,1); fL]); U=[U;u']; i=i+1; t=t+dt; if(mod(i,4)==1) plot(x,u,'r');pause(.2)

23

end end gure(2); mesh(x,[0:dt:nt*dt],U);

condinz che contiene le condizioni iniziali su u, e le funzioni latosx e latodx, contenenti le funzioni che danno
I due le richiamano entrambi la funzione le condizioni al contorno di tipo Dirichlet del problema. Di seguito riportiamo la soluzione graca calcolata per i seguenti problemi del calore:

ut = 3uxx u(x, 0) = x( x) u(0, t) = u(, t) = 0 ut = 117 106 uxx u(x, 0) = 0 0 < x < 4 u(0, t) = 100; u(4, t) = 0

(19)

(20)

24

GRAFICI IN DUE DIMENSIONI Relativo al problema del calore descritto da 19

GRAFICI IN TRE DIMENSIONI

Relativo al problema del calore descritto da 20

Figure 7: I graci in 2D rappresentano la soluzione rispetto al piano xz, dove in blu indicata la condizione iniziale e in rosso la soluzione a intervalli di tempo successivi. Il graco in 3D rappresenta la soluzione rispetto mettendo sul piano sull'asse z i valori di u.

25

Equazione delle onde metodo esplicito

Dalle considerazioni precedenti si pu ci concentriamo sul metodo esplicito di risoluzione dell'equazione delle onde, visto che le condizione per la sua stabilit non risultano particolarmente restrittive, infatti il metodo sottoposto solo alla condizione 18. Attraverso

Matlab R

stato prodotto il seguente le

.m per risolvere l'equazione delle onde:

%risoluzione equazione onde metodo esplicito d=input('inserire velocita donda: '); n=100; %passi direzione x punti in cui si valuta u nt=3000;%passi direzione t L=1; %lunghezza del lo x=linspace(0, L,n); dx=L/n; dt=0.001; k=d*dt^2/(dx)^2; %controllo convergenza if(k>=1) fprintf('Attenzione metodo instabile'); end A=sparse(diag((2-2*k)*ones(n,1))+diag(k*ones(n-1,1),1)+diag(k*ones(n-1,1),-1)); t=0; U=condiniz1(x); u=U+dt*condiniz2(x); U=[U;u]; i=1; plot(x,U); hold on for i=1:nt f0=latosx_onde(t); fL=latodx_onde(t); U(i+2,:)=(A*(U(i+1,:))'-U(i,:)'+k*[f0; zeros(n-2,1); fL])'; t=t+dt; if(mod(i,4)==1) plot(x,U(i+2,:),'r');pause(.2) end end gure(2); mesh(x,linspace(0,(nt+2)*dt,nt+2),U);

Questo le richiama quattro funzioni

condiniz1, condiniz2, latosx_onde

26

latodx_onde

che contengono rispettivamente le due condizioni iniziali e le

condizioni al contorno di tipo Dirichlet. Si deciso di studiare il problema di una corda vibrante con gli estremi ssati:

utt = 4uxx u(x, 0) = x(1 x) 0 x 1 ut (x, 0) = cos(x) u(0, t) = u(1, t) = 0

(21)

Un altro esempio quello che modellizza una corda che senza sformarsi si sposta a una velocit iniziale, questa situazione modellizzabile attraverso il seguente problema:

utt = uxx u(0, t) = u(100, t) = 0

(22)

Per la risoluzione di questo problema abbiamo utilizzato un altro le .m che crea inizialmente la perturbazione della corda a forma di parabola e la derivata prima uguale alla perturbazione iniziale della corda. Il le genera il movimento della corda, riproducendo una sorta di lmato.

References
[MCP] Matthew P. Coleman, AN INTRODUCTION TO PARTIAL DIFFERENTIAL EQUATION WITH MATLAB, Chapman & Hall-CRC Applied mathematics and nonlinear science series 2005

27

GRAFICI RELATIVI AL PROBLEMA

DELL'EQUAZIONE DELLE ONDE 21

Figure 8: I graci in 2D rappresentano la soluzione rispetto al piano xz, dove in blu indicata la condizione iniziale e in rosso la soluzione a intervalli di tempo successivi.

28

GRAFICI RELATIVI AL PROBLEMA

DELL'EQUAZIONE DELLE ONDE 22

Figure 9: Si pu vedere ad istanti successivi la stringa che si muove, nella prima immagine in alto a sinistra la situazione iniziale, da una immagine all'altra si pu vedere come l'errore locale di arrotondamento si accumula.

29

You might also like