Differenze finite

Indice dei contenuti

    Le differenze finite sono formule che approssimano le derivate di una funzione usando solo valori discreti su una griglia. Sono uno degli strumenti di base dell’analisi numerica: trasformano un problema continuo in un problema algebrico calcolabile.

    Se la funzione f è nota nei punti:

    x_i=x_0+ih,

    dove h>0 è il passo della griglia, una derivata in x_i può essere stimata combinando valori vicini come f(x_{i-1}), f(x_i) e f(x_{i+1}). L’insieme dei punti usati dalla formula si chiama stencil.

    Idea di base

    La definizione di derivata è un limite:

    f'(x)=\lim_{h\to0}\frac{f(x+h)-f(x)}{h}.

    In un calcolo numerico non si può far tendere davvero h a zero: si sceglie un passo finito e si usa il rapporto incrementale come approssimazione:

    f'(x)\approx\frac{f(x+h)-f(x)}{h}.

    Questa è una differenza in avanti. L’errore dipende dalla regolarità della funzione e dalla dimensione di h: un passo più piccolo riduce l’errore di troncamento, ma può aumentare l’errore di arrotondamento perché si sottraggono valori quasi uguali.

    Derivata prima

    Le tre formule elementari per la derivata prima sono:

    FormulaApprossimazioneOrdine
    avanti\displaystyle \frac{f(x+h)-f(x)}{h}O(h)
    indietro\displaystyle \frac{f(x)-f(x-h)}{h}O(h)
    centrata\displaystyle \frac{f(x+h)-f(x-h)}{2h}O(h^2)

    La formula in avanti usa il punto corrente e quello successivo:

    f'(x_i)\approx \frac{f_{i+1}-f_i}{h}.

    La formula all’indietro usa il punto precedente:

    f'(x_i)\approx \frac{f_i-f_{i-1}}{h}.

    La formula centrata usa due punti simmetrici:

    f'(x_i)\approx \frac{f_{i+1}-f_{i-1}}{2h}.

    La formula centrata è spesso preferibile nei punti interni della griglia perché cancella il termine di errore del primo ordine. Le formule avanti e indietro restano utili vicino ai bordi, dove uno dei due punti laterali può non essere disponibile.

    Derivazione con Taylor

    Le differenze finite si ottengono confrontando sviluppi di Taylor. Per una funzione regolare:

    f(x+h)= f(x)+hf'(x)+\frac{h^2}{2}f''(x)+\frac{h^3}{6}f'''(x)+O(h^4).

    Sottraendo f(x) e dividendo per h:

    \frac{f(x+h)-f(x)}{h} = f'(x)+\frac{h}{2}f''(x)+O(h^2).

    Quindi la differenza in avanti ha errore:

    E_T=O(h).

    Per la formula centrata si usano anche:

    f(x-h)= f(x)-hf'(x)+\frac{h^2}{2}f''(x)-\frac{h^3}{6}f'''(x)+O(h^4).

    Sottraendo:

    f(x+h)-f(x-h) = 2hf'(x)+\frac{h^3}{3}f'''(x)+O(h^5).

    Dividendo per 2h:

    \frac{f(x+h)-f(x-h)}{2h} = f'(x)+\frac{h^2}{6}f'''(x)+O(h^4).

    L’errore dominante è quindi O(h^2).

    Derivata seconda

    La formula centrata più comune per la derivata seconda è:

    f''(x_i)\approx \frac{f_{i-1}-2f_i+f_{i+1}}{h^2}.

    Si ottiene sommando gli sviluppi di Taylor in avanti e indietro:

    f(x+h)+f(x-h) = 2f(x)+h^2f''(x)+O(h^4).

    Quindi:

    \frac{f(x-h)-2f(x)+f(x+h)}{h^2} = f''(x)+O(h^2).

    Questa formula è centrale nei problemi di diffusione, conduzione termica, vibrazioni, elasticità e in molte discretizzazioni del laplaciano.

    Stencil e operatori discreti

    Uno stencil è il pattern dei punti usati da una formula. In una dimensione:

    DerivataStencilFormula
    prima avantix_i,x_{i+1}\displaystyle \frac{f_{i+1}-f_i}{h}
    prima indietrox_{i-1},x_i\displaystyle \frac{f_i-f_{i-1}}{h}
    prima centratax_{i-1},x_{i+1}\displaystyle \frac{f_{i+1}-f_{i-1}}{2h}
    seconda centratax_{i-1},x_i,x_{i+1}\displaystyle \frac{f_{i-1}-2f_i+f_{i+1}}{h^2}

    La scelta dello stencil controlla accuratezza, stabilità e compatibilità con le condizioni al bordo. Stencil più larghi possono dare ordini più alti, ma richiedono più punti, complicano il trattamento dei bordi e possono essere meno robusti vicino a discontinuità o dati rumorosi.

    Griglie e condizioni al bordo

    In un intervallo [a,b] si usa spesso una griglia uniforme:

    x_i=a+ih, \qquad h=\frac{b-a}{N}.

    Se si discretizza un problema ai limiti, le condizioni al bordo forniscono i valori agli estremi. Per esempio:

    y(a)=\alpha, \qquad y(b)=\beta.

    I valori interni y_1,\ldots,y_{N-1} diventano incognite. Sostituendo le derivate con differenze finite, un’equazione differenziale diventa un sistema di equazioni algebriche.

    Per il problema modello:

    -y''(x)=g(x), \qquad y(a)=\alpha, \qquad y(b)=\beta,

    la formula centrata dà, per i punti interni:

    -\frac{y_{i-1}-2y_i+y_{i+1}}{h^2}=g(x_i).

    Il sistema risultante è tridiagonale: ogni equazione coinvolge solo y_{i-1}, y_i e y_{i+1}. Questa struttura è uno dei motivi per cui le differenze finite sono efficienti nei problemi unidimensionali.

    Accuratezza e ordine

    L’accuratezza di una formula alle differenze finite si misura tramite l’errore di troncamento locale, ottenuto confrontando la formula discreta con la derivata esatta. Una formula è di ordine p se:

    E_T(h)=C h^p+O(h^{p+1})

    per h\to0, con C indipendente da h.

    In pratica, se una formula è di ordine p, dimezzare il passo riduce l’errore dominante di circa:

    2^p

    volte, finché l’arrotondamento non domina. Per esempio:

    OrdineEffetto del dimezzamento di h
    p=1errore circa dimezzato
    p=2errore circa diviso per 4
    p=4errore circa diviso per 16

    Questa previsione vale solo quando la funzione è sufficientemente regolare e il passo non è così piccolo da rendere dominante l’errore di arrotondamento.

    Troncamento e arrotondamento

    Nella derivazione numerica il passo h non deve essere scelto “il più piccolo possibile”. L’errore totale ha spesso due contributi opposti:

    E(h)\approx C_1h^p+C_2\frac{\varepsilon_M}{h},

    dove \varepsilon_M è l’epsilon di macchina. Il primo termine è l’errore di troncamento e diminuisce con h; il secondo è legato all’arrotondamento e può crescere quando si sottraggono numeri quasi uguali.

    Per questo una derivata numerica può peggiorare se h è troppo piccolo. Il compromesso dipende dalla precisione numerica, dalla scala della funzione, dal rumore dei dati e dall’ordine della formula.

    Differenze finite e dati rumorosi

    Le differenze finite amplificano il rumore, soprattutto nelle derivate di ordine alto. Se i dati sono misurati sperimentalmente:

    f_i=f(x_i)+\eta_i,

    dove \eta_i è rumore, la differenza:

    \frac{f_{i+1}-f_i}{h}

    può amplificare le oscillazioni perché divide per h. Ridurre il passo migliora il troncamento ma può peggiorare la sensibilità al rumore. In questi casi si usano filtraggi, fitting locale, spline, regolarizzazione o metodi progettati per dati rumorosi.

    Uso nelle equazioni differenziali

    Le differenze finite sono impiegate in:

    1. derivazione numerica di dati campionati;
    2. risoluzione di problemi ai limiti;
    3. discretizzazione di equazioni alle derivate parziali;
    4. metodi per conduzione termica, diffusione, onde e potenziale;
    5. costruzione di operatori discreti come gradiente, divergenza e laplaciano;
    6. analisi di stabilità di schemi numerici.

    Per problemi evolutivi, il passo spaziale e il passo temporale non possono essere scelti indipendentemente in modo arbitrario. In molti schemi espliciti esistono vincoli di stabilità, come la condizione CFL, che lega velocità di propagazione, passo temporale e passo spaziale.

    Differenze finite, Eulero e Runge-Kutta

    Il metodo di Eulero può essere visto come una differenza finita applicata alla derivata temporale:

    \frac{y_{n+1}-y_n}{h}\approx f(t_n,y_n).

    Da cui:

    y_{n+1}=y_n+h f(t_n,y_n).

    Metodi più accurati per EDO, come il metodo di Runge-Kutta, non sono semplicemente differenze finite elementari, ma condividono lo stesso obiettivo: sostituire l’evoluzione continua con una successione di valori discreti controllando errore e stabilità.

    Errori comuni

    1. Usare una formula centrata in un punto di bordo senza avere i valori necessari.
    2. Ridurre h senza considerare l’errore di arrotondamento.
    3. Applicare formule di ordine alto a funzioni non regolari, con spigoli o discontinuità.
    4. Confondere l’ordine locale della formula con l’errore globale della soluzione numerica.
    5. Trascurare condizioni al bordo e ottenere un sistema discreto incompatibile.
    6. Usare differenze finite su dati rumorosi senza filtraggio o regolarizzazione.
    7. Dimenticare che formule per griglie uniformi non valgono automaticamente su griglie non uniformi.
    8. Valutare solo accuratezza e non stabilità, soprattutto negli schemi per equazioni evolutive.

    Vedi anche: derivata, formula di Taylor, errore di troncamento, errore di arrotondamento, problema ai limiti, metodi numerici per EDO, metodo di Eulero, metodo di Runge-Kutta, laplaciano e condizione CFL.

    Ultimo aggiornamento: