Esercizi Svolti Matlab Calcolo Numerico

Calcolatore Numerico MATLAB

Inserisci i parametri per risolvere esercizi di calcolo numerico con MATLAB

Risultati

Esercizi Svolti MATLAB: Guida Completa al Calcolo Numerico

Introduzione al Calcolo Numerico con MATLAB

MATLAB (MATrix LABoratory) è l’ambiente di programmazione più utilizzato per il calcolo numerico, l’analisi dei dati e la visualizzazione scientifica. Questa guida completa presenta esercizi svolti di calcolo numerico con MATLAB, coprendo i metodi fondamentali con implementazioni pratiche e analisi degli errori.

Metodi per la Risoluzione di Equazioni Non Lineari

1. Metodo di Bisezione

Il metodo di bisezione è un algoritmo semplice ma robusto per trovare le radici di una funzione continua. Il principio si basa sul teorema degli zeri di Bolzano.

Implementazione in MATLAB:

function [root, iter] = bisection(f, a, b, tol, max_iter)
    if f(a)*f(b) >= 0
        error('La funzione deve avere segni opposti agli estremi');
    end

    for iter = 1:max_iter
        c = (a + b)/2;
        if abs(f(c)) < tol || (b-a)/2 < tol
            root = c;
            return;
        end
        if f(c)*f(a) < 0
            b = c;
        else
            a = c;
        end
    end
    root = (a + b)/2;
end
        

Esempio di utilizzo:

Per trovare la radice di f(x) = x³ - 2x - 5 nell'intervallo [2, 3] con tolleranza 1e-6:

f = @(x) x.^3 - 2*x - 5;
[root, iter] = bisection(f, 2, 3, 1e-6, 100);
fprintf('Radice trovata: %.6f dopo %d iterazioni\n', root, iter);
        

2. Metodo di Newton-Raphson

Il metodo di Newton (o Newton-Raphson) è un algoritmo iterativo che converge quadraticamente sotto opportune condizioni. Richiede la conoscenza della derivata della funzione.

Implementazione in MATLAB:

function [root, iter] = newton(f, df, x0, tol, max_iter)
    for iter = 1:max_iter
        x1 = x0 - f(x0)/df(x0);
        if abs(x1 - x0) < tol || abs(f(x1)) < tol
            root = x1;
            return;
        end
        x0 = x1;
    end
    root = x1;
end
        

Analisi della Convergenza:

  • Ordine di convergenza: Quadratico (p=2)
  • Condizione necessaria: f'(x) ≠ 0 vicino alla radice
  • Vantaggi: Velocità di convergenza elevata
  • Svantaggi: Necessità di calcolare la derivata

Interpolazione e Approssimazione

1. Interpolazione Polinomiale di Lagrange

Dati n+1 punti (x₀,f(x₀)), ..., (xₙ,f(xₙ)), il polinomio di Lagrange di grado ≤ n che interpole questi punti è unico.

Implementazione in MATLAB:

function p = lagrange(x, f, xx)
    n = length(x);
    p = zeros(size(xx));
    for i = 1:n
        L = ones(size(xx));
        for j = 1:n
            if j ~= i
                L = L.*(xx - x(j))/(x(i) - x(j));
            end
        end
        p = p + f(i)*L;
    end
end
        

2. Approssimazione ai Minimi Quadrati

Quando i dati sono affetti da errori, l'interpolazione può portare a risultati non significativi. L'approssimazione ai minimi quadrati trova la funzione che minimizza la somma dei quadrati degli scarti.

Metodo Complessità Accuratezza Casi d'Uso
Interpolazione di Lagrange O(n²) Esatta nei punti Dati precisi, pochi punti
Minimi Quadrati O(n³) Approssimata Dati rumorosi, molti punti
Spline Cubiche O(n) Esatta, liscia Dati che richiedono continuità delle derivate

Integrazione Numerica

1. Regola del Trapezio

La regola del trapezio approssima l'integrale definito usando trapezi invece di rettangoli. L'errore è O(h³) per ogni intervallo.

Formula Composita:

∫ₐᵇ f(x)dx ≈ h/2 [f(x₀) + 2f(x₁) + 2f(x₂) + ... + 2f(xₙ₋₁) + f(xₙ)]

Implementazione in MATLAB:

function I = trapezoidal(f, a, b, n)
    h = (b-a)/n;
    x = linspace(a, b, n+1);
    y = f(x);
    I = h*(sum(y) - 0.5*(y(1) + y(end)));
end
        

2. Regola di Simpson

La regola di Simpson usa parabole per approssimare la funzione, ottenendo un errore O(h⁵). Richiede un numero pari di intervalli.

Formula Composita:

∫ₐᵇ f(x)dx ≈ h/3 [f(x₀) + 4f(x₁) + 2f(x₂) + 4f(x₃) + ... + f(xₙ)]

Metodo Ordine Errore Num. Punti Vantaggi
Trapezio O(h²) n+1 Semplice da implementare
Simpson O(h⁴) n+1 (n pari) Maggiore accuratezza
Gauss-Legendre O(h²ⁿ) n Massima accuratezza per n punti

Risoluzione di Sistemi Lineari

1. Eliminazione di Gauss

Il metodo di eliminazione di Gauss trasforma la matrice dei coefficienti in una matrice triangolare superiore attraverso operazioni elementari sulle righe.

Implementazione in MATLAB:

function x = gauss_elimination(A, b)
    n = length(b);
    Ab = [A b];

    % Eliminazione
    for k = 1:n-1
        for i = k+1:n
            factor = Ab(i,k)/Ab(k,k);
            Ab(i,k:n+1) = Ab(i,k:n+1) - factor*Ab(k,k:n+1);
        end
    end

    % Sostituzione all'indietro
    x = zeros(n,1);
    x(n) = Ab(n,n+1)/Ab(n,n);
    for i = n-1:-1:1
        x(i) = (Ab(i,n+1) - Ab(i,i+1:n)*x(i+1:n))/Ab(i,i);
    end
end
        

2. Fattorizzazione LU

La fattorizzazione LU decompone la matrice A nel prodotto di una matrice triangolare inferiore L e una superiore U. Utile per risolvere sistemi con diverse matrici dei termini noti.

Analisi Computazionale:

  • Complessità: O(n³) per la fattorizzazione, O(n²) per la risoluzione
  • Stabilità: Il pivoting parziale migliorare la stabilità numerica
  • Applicazioni: Risoluzione di sistemi, calcolo del determinante, inversione di matrici

Ottimizzazione Numerica

1. Metodo del Gradiente Coniugato

Algoritmo iterativo per la minimizzazione di funzioni quadratiche, particolarmente efficace per sistemi lineari di grandi dimensioni con matrici simmetriche definite positive.

Pseudocodice:

  1. Inizializza x₀, r₀ = b - Ax₀, p₀ = r₀
  2. Per k = 0,1,2,... fino a convergenza:
    • αₖ = (rₖᵀrₖ)/(pₖᵀApₖ)
    • xₖ₊₁ = xₖ + αₖpₖ
    • rₖ₊₁ = rₖ - αₖApₖ
    • Se ∥rₖ₊₁∥ < tol, stop
    • βₖ = (rₖ₊₁ᵀrₖ₊₁)/(rₖᵀrₖ)
    • pₖ₊₁ = rₖ₊₁ + βₖpₖ

Analisi degli Errori

Nel calcolo numerico, è fondamentale comprendere e controllare gli errori che possono influenzare i risultati:

1. Errori di Arrotondamento

Dovuti alla rappresentazione finita dei numeri reali nel computer (standard IEEE 754). In MATLAB, il comando eps restituisce la distanza tra 1.0 e il successivo numero in virgola mobile:

>> eps
ans =
   2.2204e-16
        

2. Errori di Troncamento

Derivanti dall'interruzione di processi infiniti (come serie o iterazioni). Ad esempio, l'approssimazione di eˣ con i primi n termini della sua serie di Taylor:

eˣ ≈ 1 + x + x²/2! + x³/3! + ... + xⁿ/ⁿ!

3. Condizionamento di un Problema

Il numero di condizione κ(A) di una matrice misura la sensibilità della soluzione di Ax=b a perturbazioni nei dati:

κ(A) = ∥A∥·∥A⁻¹∥

In MATLAB, si calcola con:

>> A = hilb(5);
>> cond(A)
ans =
   4.7661e+05
        

Risorse Autorevoli per il Calcolo Numerico

Per approfondire gli argomenti trattati, consultare queste risorse accademiche:

Conclusione

Questa guida ha presentato i principali metodi di calcolo numerico implementabili in MATLAB, con esercizi svolti e analisi degli errori. La padronanza di queste tecniche è essenziale per affrontare problemi complessi in ingegneria, fisica, economia e data science. Per approfondire, si consiglia di:

  1. Sperimentare con i codici MATLAB forniti, variando i parametri
  2. Analizzare la convergenza dei metodi iterativi
  3. Confrontare l'efficienza computazionale dei diversi algoritmi
  4. Studiare casi reali tratti da pubblicazioni scientifiche

Il calcolo numerico è una disciplina in continua evoluzione, con nuove tecniche che emergono per affrontare le sfide computazionali moderne, come il machine learning e la simulazione di sistemi complessi.

Leave a Reply

Your email address will not be published. Required fields are marked *