Calcolatore Derivata Prima con Taylor e Errore in MATLAB
Calcola la derivata prima utilizzando lo sviluppo di Taylor e stima l’errore di troncamento. Inserisci i parametri richiesti per ottenere risultati precisi.
Guida Completa al Calcolo della Derivata Prima con Taylor e Stima dell’Errore in MATLAB
Lo sviluppo in serie di Taylor è uno strumento fondamentale nell’analisi numerica per approssimare funzioni complesse tramite polinomi. Quando si tratta di calcolare derivate numeriche, l’utilizzo dello sviluppo di Taylor offre un metodo sistematico per stimare sia il valore della derivata che l’errore di approssimazione.
1. Fondamenti Teorici
Lo sviluppo in serie di Taylor di una funzione f(x) intorno a un punto x₀ è dato da:
f(x) = f(x₀) + f'(x₀)(x-x₀) + f”(x₀)(x-x₀)²/2! + f”'(x₀)(x-x₀)³/3! + … + Rₙ(x)
Dove Rₙ(x) è il resto di Lagrange, che fornisce una stima dell’errore di troncamento:
Rₙ(x) = f^(n+1)(ξ)(x-x₀)^(n+1)/(n+1)! , ξ ∈ (x₀, x)
2. Approssimazione della Derivata Prima
Per calcolare la derivata prima f'(x₀), possiamo utilizzare diverse formule basate sullo sviluppo di Taylor:
- Formula in avanti (O(h)): f'(x₀) ≈ [f(x₀ + h) – f(x₀)] / h
- Formula all’indietro (O(h)): f'(x₀) ≈ [f(x₀) – f(x₀ – h)] / h
- Formula centrata (O(h²)): f'(x₀) ≈ [f(x₀ + h) – f(x₀ – h)] / (2h)
- Formula a 5 punti (O(h⁴)): f'(x₀) ≈ [-f(x₀+2h) + 8f(x₀+h) – 8f(x₀-h) + f(x₀-2h)] / (12h)
3. Stima dell’Errore
L’errore di troncamento per le formule di derivazione numerica può essere stimato utilizzando il termine successivo nello sviluppo di Taylor. Ad esempio, per la formula centrata:
Errore = -f”'(ξ)h²/6 , ξ ∈ (x₀-h, x₀+h)
Dove h è il passo di discretizzazione. Riducendo h si ottiene una stima più accurata, ma valori troppo piccoli possono introdurre errori di arrotondamento.
4. Implementazione in MATLAB
In MATLAB, possiamo implementare queste formule utilizzando funzioni anonime e operazioni vettoriali. Ecco un esempio di implementazione della formula centrata:
% Definizione della funzione
f = @(x) sin(x);
% Parametri
x0 = 1;
h = 0.1;
% Formula centrata O(h²)
derivata_approssimata = (f(x0 + h) - f(x0 - h)) / (2*h);
% Derivata vera per confronto
derivata_vera = cos(x0);
% Errore assoluto e percentuale
errore_assoluto = abs(derivata_approssimata - derivata_vera);
errore_percentuale = abs(errore_assoluto / derivata_vera) * 100;
fprintf('Derivata approssimata: %.6f\n', derivata_approssimata);
fprintf('Derivata vera: %.6f\n', derivata_vera);
fprintf('Errore assoluto: %.2e\n', errore_assoluto);
fprintf('Errore percentuale: %.4f%%\n', errore_percentuale);
5. Analisi dell’Errore Numerico
L’errore totale nel calcolo numerico delle derivate è composto da due componenti principali:
- Errore di troncamento: Dipende dal passo h e dall’ordine della formula utilizzata. Diminuisce all’aumentare dell’ordine o al diminuire di h.
- Errore di arrotondamento: Dipende dalla precisione della macchina (eps in MATLAB) e aumenta al diminuire di h a causa della sottrazione di numeri quasi uguali.
| Formula | Ordine Errore | Errore di Troncamento | Vantaggi | Svantaggi |
|---|---|---|---|---|
| In avanti | O(h) | -f”(ξ)h/2 | Semplice da implementare | Basso ordine di accuratezza |
| All’indietro | O(h) | f”(ξ)h/2 | Semplice da implementare | Basso ordine di accuratezza |
| Centrata | O(h²) | -f”'(ξ)h²/6 | Maggiore accuratezza | Richiede più valutazioni di funzione |
| A 5 punti | O(h⁴) | f^(5)(ξ)h⁴/30 | Altissima accuratezza | Complessità computazionale maggiore |
6. Ottimizzazione del Passo h
La scelta ottimale del passo h è cruciale per minimizzare l’errore totale. Un metodo comune è utilizzare la stima dell’errore per adattare dinamicamente h:
- Calcolare la derivata con passo h
- Calcolare la derivata con passo h/2
- Stimare l’errore utilizzando la differenza tra i due risultati
- Se l’errore è troppo grande, ridurre h e ripetere
In MATLAB, questo può essere implementato con un ciclo while che continua fino a quando l’errore stimato non scende sotto una soglia prestabilita.
7. Confronto con il Metodo delle Differenze Finite
Lo sviluppo di Taylor è alla base del metodo delle differenze finite, ampiamente utilizzato nella risoluzione numerica di equazioni differenziali. La tabella seguente confronta le prestazioni dei due approcci:
| Metodo | Accuratezza | Complessità | Stabilità | Applicazioni Tipiche |
|---|---|---|---|---|
| Sviluppo di Taylor | Alta (controllabile) | Moderata | Buona | Approssimazione locale, analisi dell’errore |
| Differenze Finite | Media-Alta | Bassa | Dipende dal problema | Equazioni differenziali, problemi al contorno |
8. Applicazioni Pratiche
Il calcolo numerico delle derivate trova applicazione in numerosi campi:
- Ottimizzazione: Nel metodo del gradiente e in algoritmi come Newton-Raphson
- Equazioni Differenziali: Nella risoluzione numerica di ODE e PDE
- Elaborazione Segnali: Nel calcolo di filtri derivativi
- Meccanica Computazionale: Nella simulazione di sistemi fisici
- Finanza Computazionale: Nel calcolo dei “Greeks” per le opzioni
9. Errori Comuni e Come Evitarli
Quando si implementano questi metodi in MATLAB, è facile incorrere in errori che possono compromettere l’accuratezza dei risultati:
- Passo h troppo grande: Causa errori di troncamento significativi. Soluzione: Utilizzare formule di ordine superiore o ridurre h.
- Passo h troppo piccolo: Introduce errori di arrotondamento. Soluzione: Utilizzare precisione doppia (double) e evitare valori di h inferiori a √eps.
- Funzioni non lisce: Le formule basate su Taylor richiedono che la funzione sia sufficientemente derivabile. Soluzione: Utilizzare metodi alternativi per funzioni con discontinuità.
- Sottrazione catastrofica: Quando si sottraggono numeri quasi uguali. Soluzione: Utilizzare formule che minimizzano questo effetto (es: formula centrata).
10. Estensioni Avanzate
Per applicazioni che richiedono maggiore accuratezza, è possibile considerare:
- Derivazione automatica: Utilizzare pacchetti come MATLAB’s
gradientsoderivativeper calcoli simbolici - Metodi spettrali: Utilizzare trasformate di Fourier per derivazione in spazio delle frequenze
- Derivazione complessa: Utilizzare l’aritmetica complessa per eliminare gli errori di sottrazione
- Adattività: Implementare algoritmi che adattano dinamicamente il passo h in base all’errore stimato