Metodo delle differenze finite

Da Wikipedia, l'enciclopedia libera.

In matematica, il metodo delle differenze finite è una strategia utilizzata per risolvere numericamente equazioni differenziali che, nelle sue varianti, si basa sull'approssimazione delle derivate con equazioni alle differenze finite. Viene utilizzato prevalentemente per equazioni differenziali ordinarie, anche se il metodo viene sfruttato come schema di avanzamento nel tempo per problemi alle derivate parziali.

Derivazione dal polinomio di Taylor[modifica | modifica wikitesto]

Si consideri una funzione di cui si vogliono approssimare le derivate, e si supponga che, grazie al teorema di Taylor, si possa costruire la serie di Taylor:

f(x_0 + h) = f(x_0) + \frac{f'(x_0)}{1!}h + \frac{f^{(2)}(x_0)}{2!}h^2 + \cdots + \frac{f^{(n)}(x_0)}{n!}h^n + R_n(x)

dove n! denota il fattoriale di n, mentre R_n(x) è un termine che denota la differenza tra la funzione originale e il polinomio di Taylor di grado n. Si deriva quindi l'approssimazione per la prima derivata di f troncando il polinomio:

f(x_0 + h) = f(x_0) + f'(x_0)h + R_1(x)

Ponendo x_0 = a si ha:

f(a+h) = f(a) + f'(a)h + R_1(x),

Dividendo per h:

{f(a+h)\over h} = {f(a)\over h} + f'(a)+{R_1(x)\over h}

e risolvendo in funzione di f'(a):

f'(a) = {f(a+h)-f(a)\over h} - {R_1(x)\over h}

Se si assume che R_1(x) è sufficientemente piccola, l'approssimazione per la prima derivata di f è:

f'(a)\approx {f(a+h)-f(a)\over h}

Ordine di convergenza e differenze finite compatte[modifica | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi Coefficienti del metodo delle differenze finite.

Se la funzione u è abbastanza regolare, si può scriverla come serie di Taylor col resto nella forma di Lagrange:

u(x+h) = u(x) + hu'(x) + \frac{h^2}{2}u''(y)

Da qui portando u(x) a primo membro e dividendo per h si ottiene che l'approssimazione di u'(x) data precedentemente ha un errore di ordine uno rispetto ad h. Se la funzione è più regolare, si può sviluppare ad esempio u(x) in serie di Taylor al secondo ordine sia in avanti che all'indietro:

u(x+h) = u(x) + hu'(x) + \frac{h^2}{2}u''(x) + \frac{h^3}{6}u'''(y)
u(x-h) = u(x) - hu'(x) + \frac{h^2}{2}u''(x) - \frac{h^3}{6}u'''(z)

dove y sta fra x e x+h mentre z sta tra x-h e x. Se ora si considera la differenza tra la prima e la seconda equazione, si ottiene la differenza finita centrata per la derivata prima:

u'(x)\, = \frac{u(x+h)-u(x-h)}{2h} + \frac{h^2}{12}(u'''(y)+u'''(z))

che si vede essere di ordine due rispetto ad h.

Si può generalizzare l'idea e pensare di prendere una combinazione lineare di espansioni in serie di Taylor di u in punti del tipo (x + nh), sistemando i coefficienti della combinazione lineare in modo da elidere i termini di troppo e tenere solo quello relativo alla derivata che si vuole approssimare, e il termine di grado più alto (che dà l'ordine di convergenza). Questa logica porta agli schemi delle differenze finite compatte che si possono usare per approssimare derivate di qualunque ordine, a patto di supporre u abbastanza regolare e di avere a disposizione un numero di nodi sufficiente.

Esempio[modifica | modifica wikitesto]

Si vuole approssimare la derivata seconda con un'accuratezza di ordine 2. Si scrive dunque

u(x+h) = u(x) + hu'(x) + \frac{h^2}{2}u''(x) + \frac{h^3}{6}u'''(x) + \frac{h^4}{24}u''''(y)
u(x+2h) = u(x) + 2hu'(x) + \frac{4h^2}{2}u''(x) + \frac{8h^3}{6}u'''(x) + \frac{16h^4}{24}u''''(z)
u(x+3h) = u(x) + 3hu'(x) + \frac{9h^2}{2}u''(x) + \frac{27h^3}{6}u'''(x) + \frac{81h^4}{24}u''''(w)
u(x+4h) = u(x) + 4hu'(x) + \frac{16h^2}{2}u''(x) + \frac{64h^3}{6}u'''(x) + \frac{256h^4}{24}u''''(q)

Moltiplicando la prima equazione per a, la seconda per b, la terza per c, la quarta per d; e quindi sommando, si ottiene (per semplicità di notazioni si indica con u_{n} il valore di u in x+nh):

au_1+bu_2+cu_3+du_4 = (a+b+c+d)u_0 + (a+2b+3c+4d)hu'_0 + (a+4b+9c+16d)\frac{h^2}{2}u''_0
+ (a+8b+27c+64d)\frac{h^3}{6}u'''_0 + a\frac{h^4}{24}u''''(y) + b\frac{16h^4}{24}u''''(z) + c\frac{81h^4}{24}u''''(w) + d\frac{256h^4}{24}u''''(q)

Si deve ora imporre che si annullino tutti i primi tre coefficienti del secondo membro, in modo che resti solo il termine relativo alla derivata seconda. Si pone quindi:

a+b+c+d=0
a+2b+3c+4d=0
a+4b+9c+16d=2
a+8b+27c+64d=0

in modo che dividendo per h^2 si ottenga:

\frac{au_1+bu_2+cu_3+du_4}{h^2} = u''_0 + o(h^2)

che è di ordine due, come era richiesto.

Bibliografia[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

matematica Portale Matematica: accedi alle voci di Wikipedia che trattano di matematica