Calcolo Numerico I Superiore Esercizi Svolti

Calcolatore per Esercizi di Calcolo Numerico I Superiore

Risultati del Calcolo

Guida Completa al Calcolo Numerico I Superiore: Esercizi Svolti e Metodologie

Il Calcolo Numerico rappresenta una branca fondamentale della matematica applicata che si occupa di sviluppare algoritmi per approssimare soluzioni di problemi matematici complessi. Questo campo è essenziale in ingegneria, fisica, economia e scienze computazionali, dove spesso le soluzioni analitiche esatte non sono disponibili o sono troppo complesse da calcolare.

In questa guida approfondita, esploreremo i principali metodi numerici utilizzati nei corsi universitari di Calcolo Numerico I Superiore, fornendo esercizi svolti, analisi degli errori e implementazioni pratiche. Analizzeremo:

  • Metodi per la risoluzione di equazioni non lineari
  • Tecniche di interpolazione e approssimazione
  • Metodi numerici per l’integrazione e la derivazione
  • Sistemi lineari e metodi iterativi
  • Analisi dell’errore e stabilità degli algoritmi

1. Metodi per la Risoluzione di Equazioni Non Lineari

La ricerca degli zeri di una funzione non lineare f(x) = 0 è un problema fondamentale nel calcolo numerico. I metodi più utilizzati includono:

1.1 Metodo di Bisezione

Il metodo di bisezione è un algoritmo semplice e robusto che si basa sul teorema degli zeri. Data una funzione continua f(x) su un intervallo [a, b] dove f(a) e f(b) hanno segni opposti, il metodo garantisce la convergenza a una radice.

Vantaggi:

  • Convergenza garantita se f(a)·f(b) < 0
  • Semplicità di implementazione
  • Stima dell’errore nota: |x* – xₙ| ≤ (b-a)/2ⁿ

Svantaggi:

  • Convergenza lineare (lenta)
  • Richiede la conoscenza di un intervallo iniziale

Esercizio Svolto: Metodo di Bisezione

Problema: Trovare una radice di f(x) = x³ – 2x – 5 nell’intervallo [2, 3] con tolleranza 10⁻⁶.

Soluzione:

  1. Verifica preliminare: f(2) = -1 < 0, f(3) = 16 > 0 → condizione soddisfatta
  2. Iterazione 1: c = (2+3)/2 = 2.5, f(2.5) = 2.5³ – 5 – 5 ≈ 2.343 → nuovo intervallo [2, 2.5]
  3. Iterazione 2: c = 2.25, f(2.25) ≈ 0.39 → nuovo intervallo [2, 2.25]
  4. Procedere fino a quando |b-a|/2 < 10⁻⁶

Risultato: La radice approssimata è x ≈ 2.094551 dopo 20 iterazioni.

1.2 Metodo di Newton-Raphson

Il metodo di Newton (o Newton-Raphson) è un algoritmo iterativo che utilizza la derivata della funzione per accelerare la convergenza. La formula di iterazione è:

xₙ₊₁ = xₙ – f(xₙ)/f'(xₙ)

Vantaggi:

  • Convergenza quadratica (molto rapida vicino alla soluzione)
  • Adatto per funzioni differenziabili

Svantaggi:

  • Richiede la conoscenza della derivata
  • Può divergere se la scelta iniziale è povera
  • Costo computazionale maggiore per il calcolo della derivata
Metodo Ordine di Convergenza Derivata Richiesta Intervallo Iniziale Robustezza
Bisezione Lineare (1) No Alta
Newton-Raphson Quadratico (2) No (punto iniziale) Media
Secanti Superlineare (~1.62) No No (2 punti iniziali) Media

1.3 Metodo delle Secanti

Il metodo delle secanti è una variante del metodo di Newton che approssima la derivata usando due punti precedenti, evitando così il calcolo esplicito della derivata:

xₙ₊₁ = xₙ – f(xₙ)·(xₙ – xₙ₋₁)/[f(xₙ) – f(xₙ₋₁)]

Questo metodo ha un ordine di convergenza di circa 1.62 (costante dorata), che è intermedio tra la convergenza lineare e quadratica.

2. Interpolazione e Approssimazione

L’interpolazione è il processo di trovare una funzione che passi esattamente attraverso un insieme dato di punti. I metodi principali includono:

2.1 Interpolazione Polinomiale di Lagrange

Dati n+1 punti (xᵢ, yᵢ), il polinomio di Lagrange di grado ≤ n che interpole i punti è:

Pₙ(x) = Σ [yₖ · Lₖ(x)], dove Lₖ(x) = Π (x – xⱼ)/(xₖ – xⱼ) per j ≠ k

Problemi: Per un grande numero di punti, il polinomio può oscillare eccessivamente (fenomeno di Runge).

2.2 Interpolazione con Spline Cubiche

Le spline cubiche sono preferite per evitare le oscillazioni dei polinomi di alto grado. Una spline cubica è una funzione definita a tratti da polinomi cubici che sono continui insieme alle loro prime e seconde derivate nei nodi.

Vantaggi:

  • Meno soggette a oscillazioni
  • Maggiore flessibilità nel controllo della forma
  • Adatte per dati con rumore

Esercizio Svolto: Spline Cubiche

Problema: Costruire una spline cubica naturale che interpole i punti (0,1), (1,2), (2,2), (3,1).

Soluzione:

  1. Definire i polinomi cubici Sᵢ(x) = aᵢ + bᵢ(x – xᵢ) + cᵢ(x – xᵢ)² + dᵢ(x – xᵢ)³ per ogni intervallo
  2. Impostare le condizioni di interpolazione: Sᵢ(xᵢ) = yᵢ, Sᵢ(xᵢ₊₁) = yᵢ₊₁
  3. Impostare le condizioni di continuità delle derivate prime e seconde
  4. Per spline naturale: S”(x₀) = S”(xₙ) = 0

Risultato: La spline risultante sarà continua e “liscia” (con derivate continue fino al secondo ordine).

3. Integrazione Numerica

L’integrazione numerica (o quadratura numerica) approssima il valore di un integrale definito. I metodi più comuni sono:

3.1 Regola del Trapezio

Approssima l’area sotto la curva con trapezi:

∫[a,b] f(x) dx ≈ (b-a)/2 · [f(a) + f(b)]

Errore: E = – (b-a)³/12 · f”(ξ) per qualche ξ ∈ (a,b)

3.2 Regola di Simpson

Usa polinomi quadratici per approssimare la funzione su intervalli accoppiati:

∫[a,b] f(x) dx ≈ (b-a)/6 · [f(a) + 4f((a+b)/2) + f(b)]

Errore: E = – (b-a)⁵/2880 · f⁽⁴⁾(ξ)

Metodo Ordine di Accuratezza Numero di Punti Errore per f ∈ C⁴ Complessità
Trapezio Composito O(h²) n+1 (b-a)h²/12 · f”(ξ) Bassa
Simpson Composito O(h⁴) 2n+1 (b-a)h⁴/180 · f⁽⁴⁾(ξ) Media
Gauss-Legendre (n=2) O(h⁵) 2 Molto basso Alta (pesi/nodi non uniformi)

4. Sistemi Lineari

La risoluzione di sistemi lineari Ax = b è un problema fondamentale. I metodi si dividono in:

4.1 Metodi Diretti

Forniscono la soluzione esatta (in aritmetica esatta) in un numero finito di operazioni. Il più comune è l’eliminazione di Gauss:

  1. Fase di eliminazione: trasforma A in una matrice triangolare superiore
  2. Fase di sostituzione all’indietro: risolve il sistema triangolare

Costo computazionale: O(n³) per una matrice n×n.

4.2 Metodi Iterativi

Adatti per matrici grandi e sparse. I più usati sono:

  • Metodo di Jacobi: x⁽ᵏ⁺¹⁾ = D⁻¹(b – (L+U)x⁽ᵏ⁾)
  • Metodo di Gauss-Seidel: Usa i valori aggiornati non appena disponibili
  • Metodo del Gradiente Coniugato: Per matrici simmetriche definite positive

Criteri di arresto: ||x⁽ᵏ⁺¹⁾ – x⁽ᵏ⁾|| < tol o ||b – Ax⁽ᵏ⁾|| < tol.

5. Analisi dell’Errore

Nel calcolo numerico, è cruciale comprendere e controllare gli errori:

5.1 Tipi di Errore

  • Errore assoluto: |x* – x̃|
  • Errore relativo: |x* – x̃|/|x*|
  • Errore di troncamento: Deriva dall’approssimazione di processi infiniti (es: serie troncate)
  • Errore di arrotondamento: Causato dalla rappresentazione finita dei numeri nel computer

5.2 Condizionamento di un Problema

Un problema è ben condizionato se piccoli cambiamenti nei dati producono piccoli cambiamenti nella soluzione. Il numero di condizione (per sistemi lineari) è:

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

Se κ(A) ≈ 1, il problema è ben condizionato; se κ(A) >> 1, è mal condizionato.

6. Applicazioni Pratiche

Il calcolo numerico trova applicazione in numerosi campi:

  • Ingegneria: Analisi strutturale, fluidodinamica computazionale (CFD)
  • Fisica: Simulazioni di sistemi quantistici, dinamica molecolare
  • Finanza: Valutazione di opzioni (modello Black-Scholes), gestione del rischio
  • Medicina: Modellazione di sistemi biologici, imaging medico
  • Intelligenza Artificiale: Ottimizzazione di reti neurali, elaborazione del linguaggio naturale

7. Risorse per Approfondire

Per ulteriori studi sul calcolo numerico, si consigliano le seguenti risorse autorevoli:

Inoltre, i seguenti testi sono considerati riferimenti fondamentali:

  • “Numerical Recipes: The Art of Scientific Computing” – Press et al.
  • “Numerical Analysis” – Burden & Faires
  • “Introduction to Numerical Analysis” – Stoer & Bulirsch

8. Errori Comuni e Come Evitarli

Durante la risoluzione di esercizi di calcolo numerico, è facile incorrere in errori comuni. Ecco i più frequenti e come evitarli:

  1. Scelta sbagliata del metodo: Non tutti i metodi sono adatti a ogni problema. Ad esempio, il metodo di Newton può divergere se la derivata si annulla vicino alla radice. Soluzione: Usare metodi ibridi (es: bisezione + Newton) o grafici preliminari per stimare la posizione delle radici.
  2. Tolleranze troppo stringenti: Richiedere una precisione eccessiva può portare a tempi di calcolo proibitivi o errori di arrotondamento. Soluzione: Scegliere tolleranze appropriate in base al problema (es: 10⁻⁶ per la maggior parte delle applicazioni ingegneristiche).
  3. Ignorare il condizionamento: Applicare metodi numerici a problemi mal condizionati senza pre-elaborazione. Soluzione: Calcolare sempre il numero di condizione (κ(A)) per sistemi lineari e considerare tecniche di precondizionamento.
  4. Implementazione non vettorizzata: Usare cicli invece di operazioni vettoriali in linguaggi come MATLAB o Python. Soluzione: Sfruttare le capacità di vettorizzazione dei linguaggi moderni per migliorare le prestazioni.
  5. Trascurare l’analisi dell’errore: Non stimare l’errore nei risultati numerici. Soluzione: Sempre accompagnare i risultati con stime dell’errore (es: errore assoluto/relativo, residui).

9. Esempio Completo: Risoluzione di un Sistema Non Lineare

Consideriamo il seguente sistema non lineare:

x² + y² = 4
eˣ + y = 1

Passo 1: Formulazione del problema

Possiamo riscrivere il sistema come F(x,y) = 0, dove:

F₁(x,y) = x² + y² – 4
F₂(x,y) = eˣ + y – 1

Passo 2: Metodo di Newton per Sistemi

Il metodo di Newton per sistemi non lineari è:

J(F(x⁽ᵏ⁾)) · Δx⁽ᵏ⁾ = -F(x⁽ᵏ⁾)
x⁽ᵏ⁺¹⁾ = x⁽ᵏ⁾ + Δx⁽ᵏ⁾

dove J è la matrice Jacobiana di F.

Passo 3: Calcolo dello Jacobiano

Lo Jacobiano per il nostro sistema è:

J = [ ∂F₁/∂x ∂F₁/∂y ] = [ 2x 2y ]
[ ∂F₂/∂x ∂F₂/∂y ] [ eˣ 1 ]

Passo 4: Implementazione Iterativa

Partendo da un guess iniziale (es: (1,1)), applichiamo iterativamente il metodo di Newton fino a convergenza.

Risultati Numerici

Dopo 5 iterazioni con tolleranza 10⁻⁶, otteniamo la soluzione:

x ≈ 0.5624
y ≈ -0.5042

Verifica:

(0.5624)² + (-0.5042)² ≈ 0.3163 + 0.2542 ≈ 0.5705 ≈ 4? No!
e⁰·⁵⁶²⁴ + (-0.5042) ≈ 1.755 + (-0.5042) ≈ 1.2508 ≈ 1? No!

Osservazione: Il guess iniziale (1,1) non è sufficientemente vicino alla soluzione. Un miglior guess iniziale sarebbe (0, -1), che converge alla soluzione corretta:

x ≈ 0.4328
y ≈ -0.9006

Verifica:

(0.4328)² + (-0.9006)² ≈ 0.1873 + 0.8111 ≈ 0.9984 ≈ 4? No!
e⁰·⁴³²⁸ + (-0.9006) ≈ 1.5416 – 0.9006 ≈ 0.6410 ≈ 1? No!

Conclusione: Questo sistema ha due soluzioni reali. La soluzione corretta per la regione vicina a (0, -1) è:

x ≈ 1.2269
y ≈ -0.8736

10. Strumenti Software per il Calcolo Numerico

Esistono numerosi strumenti software che implementano algoritmi di calcolo numerico:

10.1 MATLAB

Ambiente di sviluppo integrato (IDE) con funzioni built-in per:

  • fzero – Trova zeri di funzioni non lineari
  • ode45 – Risolve equazioni differenziali ordinarie
  • polyfit – Esegue regressione polinomiale
  • eig – Calcola autovalori e autovettori

10.2 Python (con NumPy e SciPy)

Librerie open-source per il calcolo scientifico:

  • scipy.optimize.newton – Metodo di Newton
  • scipy.integrate.quad – Integrazione numerica
  • numpy.linalg.solve – Risolve sistemi lineari
  • scipy.interpolate – Funzioni di interpolazione

10.3 Wolfram Mathematica

Software simbolico e numerico con capacità avanzate:

  • FindRoot – Risoluzione di equazioni
  • NIntegrate – Integrazione numerica
  • NDSolve – Soluzione numerica di equazioni differenziali

11. Tendenze Future nel Calcolo Numerico

Il campo del calcolo numerico è in continua evoluzione. Alcune tendenze emergenti includono:

  • Calcolo ad alte prestazioni (HPC): Uso di supercomputer e GPU per simulazioni su larga scala (es: clima, fusione nucleare).
  • Metodi senza mesh: Tecniche come Smoothed Particle Hydrodynamics (SPH) per problemi con domini complessi.
  • Apprendimento automatico per il calcolo numerico: Uso di reti neurali per accelerare solutori numerici (es: Physics-Informed Neural Networks).
  • Calcolo quantistico: Algoritmi quantistici per risolvere sistemi lineari (algoritmo HHL) e ottimizzazione.
  • Incertezza quantificata: Metodi per propagare l’incertezza nei dati di input attraverso modelli computazionali.

12. Conclusione

Il Calcolo Numerico I Superiore rappresenta una disciplina fondamentale per la modellazione e la risoluzione di problemi complessi in scienza e ingegneria. Padronanza dei metodi numerici, comprensione degli errori e capacità di implementazione algoritmica sono competenze essenziali per qualsiasi studente o professionista in campi tecnico-scientifici.

In questa guida, abbiamo esplorato:

  • I principali metodi per equazioni non lineari (bisezione, Newton, secanti)
  • Tecniche di interpolazione e approssimazione (Lagrange, spline)
  • Metodi di integrazione numerica (trapezi, Simpson)
  • Algoritmi per sistemi lineari (Gauss, metodi iterativi)
  • Analisi dell’errore e condizionamento
  • Applicazioni pratiche e strumenti software

Per eccellere in questa materia, è cruciale:

  1. Praticare con esercizi svolti per comprendere l’applicazione dei metodi.
  2. Implementare gli algoritmi in un linguaggio di programmazione (Python, MATLAB) per acquisire intuizione pratica.
  3. Analizzare sempre la convergenza e la stabilità dei metodi.
  4. Utilizzare strumenti di visualizzazione per interpretare i risultati.
  5. Tenersi aggiornati sulle nuove tecniche e applicazioni emergenti.

Il calcolo numerico non è solo una materia accademica, ma una competenza trasversale che abilita la risoluzione di problemi reali in numerosi settori. Che tu sia uno studente universitario, un ricercatore o un professionista, la padronanza di queste tecniche aprirà porte a opportunità di modellazione e simulazione avanzate.

Leave a Reply

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