Sei sulla pagina 1di 3

Laboratorio 16

Approssimazione di derivate con schemi alle


differenze finite
© 2017 - Questo testo (compresi i quesiti ed il loro svolgimento) è coperto da diritto d’autore. Non può essere sfruttato a fini commerciali
o di pubblicazione editoriale. Non possono essere ricavati lavori derivati. Ogni abuso sarà punito a termine di legge dal titolare del diritto.
This text is licensed to the public under the Creative Commons Attribution-NonCommercial-NoDerivs2.5 License
(http://creativecommons.org/licenses/by-nc-nd/2.5/)

Consideriamo il problema dell’approssimazione della derivata di una funzione f in un


punto x ∈ [a, b]. Supponiamo che la funzione f sia continua e derivabile in un intorno del
punto x ∈ [a, b], allora
f (x + h) − f (x)
f 0 (x) = lim .
h→0 h
L’idea dei metodi alle differenze finite è quella di sostituire all’operazione di limite il rapporto
incrementale con h finito. In questo modo, si ottengono i 3 seguenti metodi classici per
l’approssimazione di f 0 (x):
f (x + h) − f (x)
ˆ Differenze finite in avanti : f 0 (x) ≈ ,
h
f (x) − f (x − h)
ˆ Differenze finite all’indietro : f 0 (x) ≈ ,
h
f (x + h) − f (x − h)
ˆ Differenze centrate: f 0 (x) ≈= .
2h
Per l’approssimazione della derivata sull’intervallo [a, b], un modo naturale di procedere è
quello di introdurre dei nodi {xk }nk=0 definiti come

x0 = a, xn = b, xk+1 = xk + h, per k = 0, . . . , n − 1,

dove h = (b−a)/n, quindi si approssima la derivata della funzione su ciascun nodo utilizzando
nelle formule precedenti i valori nodali f (xk ).

Esercizio 1
Si vuole approssimare numericamente tramite la tecnica delle differenze finite la derivata
prima della funzione:

f (x) = exp(−x2 ) sin(2x + 1), x ∈ [−3, 3]

1. Si disegni il grafico della funzione assegnata e se ne calcoli la derivata prima analitica-


mente.
2. Si approssimi la derivata prima in x = 0 tramite gli schemi alle differenze finite in avanti,
all’indietro e centrate, utilizzando un passo h = 0.4, 0.2, 0.1, 0.05, 0.025, 0.0125.
3. Per ciascuno dei tre schemi si calcoli l’errore commesso e se ne visualizzi l’andamento
in funzione del passo h su un grafico in scala logaritmica; verificare che ci sia accordo
con i risultati teorici.

1
4. Si considerino N + 1 punti equispaziati −3 = x0 < x1 < x2 < · · · < xN = 3 con passo
h = 0.1. Si approssimi la derivata della funzione f nei soli punti interni x1 , · · · , xN −1
tramite lo schema delle differenze centrate, facendo uso delle valutazioni f (xi ), i =
0, . . . , N della funzione nei nodi. Si confronti il grafico della derivata esatta con quello
della sua approssimazione. Si valuti l’errore massimo (in valore assoluto) nei nodi interni
tra derivata prima esatta e derivata prima approssimata. E’ possibile utilizzare il metodo
delle differenze finite centrate per approssimare anche la derivata in x0 e xN ?

5. (T) Si ricavino, utilizzando il metodo dei coefficienti indeterminati, i coefficienti a, b e


c del metodo alle differenze finite che approssima la derivata f 0 (xi ) utilizzando i valori
f (xi ), f (xi−1 ) e f (xi−2 ):

Df (xi ) = af (xi ) + bf (xi−1 ) + cf (xi−2 ).

6. Si ripeta quanto fatto nei punti 2 e 3 utilizzando lo schema appena ricavato, ovvero si
approssimi la derivata prima in x = 0 con un passo h = 0.4, 0.2, 0.1, 0.05, 0.025, 0.0125,
riportando gli errori su un grafico in scala logaritmica. Qual è l’ordine di convergenza
del metodo?

7. Si consideri la suddivisione dell’intervallo [−3, 3] già effettuata al punto 4. Si utilizzi


il metodo ricavato per il calcolo della derivata f 0 (xN ) valutata nell’ultimo punto e
si aggiunga tale risultato a quelli ottenuti attraverso il metodo delle differenze finite
centrate. Visualizzare graficamente la derivata approssimata mettendo in evidenza il
nuovo valore calcolato.

8. (per casa) Si ricavino, utilizzando il metodo dei coefficienti indeterminati, i coefficienti


a, b e c del metodo alle differenze finite che approssima la derivata f 0 (xi ) utilizzando i
valori f (xi ), f (xi+1 ) e f (xi+2 ):

Df (xi ) = af (xi ) + bf (xi+1 ) + cf (xi+2 ).

Utilizzare il metodo cosı̀ ricavato per valutare la derivata nell’ultimo punto restante:
x0 . Si visualizzi il grafico della derivata f 0 (x) in [−3, 3].

Esercizio 2 (per casa)


Si consideri una approssimazione alle differenze finite della derivata di una generica funzione
f , data dalla formula
c1 f (x̄ + 2h) + c2 f (x̄ + h) + c3 f (x̄) + c4 f (x̄ − h) + c5 f (x̄ − 2h)
(δ ∗ f )(x̄) := , (1)
h
con c1 , . . . , c5 ∈ R.

1. Si costruisca la function diff finite.m, che prende in input:

ˆ la funzione f, definita come function handle;


ˆ il passo di discretizzazione h;
ˆ il vettore x dei punti in cui approssimare la derivata;

2
ˆ il vettore c dei coefficienti che definiscono la formula (1);

e restituisce in output il vettore ∆f delle approssimazioni della derivata nei punti di x.


La firma di tale function sarà

function ∆ f = diff finite(f,h,x,c).

2. Si consideri la funzione

f (x) = sin(2x) cos(x) + exp(x/2)

e si riportino i grafici di f e f 0 nell’intervallo [0, 4].

3. Utilizzando la function diff finite.m, si approssimi f 0 con lo schema delle diffe-


renze finite centrate classico δf , con passo h=0.2, utilizzando un opportuno vettore
di coefficienti c come input. Si calcoli tale approssimazione nei punti x0 , . . . , xN della
griglia equispaziata di passo h su [0, 4]. Si riportino in uno stesso grafico f 0 e la sua
approssimazione.1

4. Si ripeta quanto fatto al punto precedente per h = 0.1, 0.05, 0.025, 0.0125, 0.00625. Per
ogni valore di h, si calcoli l’errore

max |(δf )(xi ) − f 0 (xi )|


i=0,...,N

e lo si riporti in funzione di h in un grafico a scala logaritmica (loglog), confrontandolo


con l’andamento previsto dalla teoria.

5. Utilizzando lo sviluppo di Taylor fino al quinto ordine per gli addendi della formula (1),
è possibile dimostrare che i coefficienti c1 , . . . , c5 che risolvono il sistema lineare
    
1 1 1 1 1 c1 0
 2
 1 0 −1 −2  c2  1
   

 2 1/2 0 1/2 2   c3  = 0 , (2)
   

4/3 1/6 0 −1/6 −4/3 c4  0
2/3 1/24 0 1/24 2/3 c5 0

corrispondono ad un’approssimazione di ordine 4 di f 0 . Calcolare esplicitamente tali


coefficienti e ripetere quanto fatto nei punti 3 e 4 con la formula δ ∗ f ottenuta.

6. (Facoltativo) Ricavare teoricamente il sistema (2).

1
Non si badi, in questo contesto, al fatto che per costruire le approssimazioni di f 0 nei nodi di bordo si
debbano utilizzare nodi esterni all’intervallo di interesse.