Analisi numerica/Motivazioni ed esempi
L'approssimazione numerica mette le sue radici già ai tempi di Newton, Gauss o Eulero. La sua ragione d'essere è dovuta a due principali tipologie di problemi: quelli impossibili da risolvere analiticamente (ossia con una formula esplicita) e quelli risolvibili analiticamente ma solo con un numero enorme di passaggi. Nel primo caso quella dell'analisi numerica è davvero l'unica strada per risolvere il problema (ovviamente solo in modo approssimato). Nel secondo caso, invece, benché esista una soluzione in forma chiusa, si ricorre a tecniche di approssimazione in modo da ottenere una buona stima della soluzione in tempi ragionevoli.
Facciamo qualche esempio riguardante problemi generali che poi tratteremo in dettaglio nel seguito.
Sistemi lineari
[modifica | modifica sorgente]L'algebra lineare (e la risoluzione dei sistemi lineari in particolare) è uno dei principali campi di applicazione della matematica numerica. Il motivo di ciò sta nel fatto che la quasi totalità dei problemi numerici si riconduce, alla fine dei conti, alla risoluzione di un sistema lineare più o meno grande. Quest'ultimo può avere - a seconda del problema da cui deriva - determinate proprietà, perciò risulta essenziale uno studio approfondito delle varie metodologie di algebra lineare numerica in modo da poter scegliere per ogni problema il metodo che meglio sfrutta le proprietà a disposizione. Una delle applicazioni pratiche più frequenti, ad esempio, è la risoluzione numerica di equazioni alle derivate parziali. La loro discretizzazione porta, in generale, a sistemi lineari la cui matrice ha una buona struttura di sparsità e, nel caso monodimensionale e in determinate situazioni, può addirittura essere tridiagonale. La risoluzione di tali sistemi è estremamente veloce se effettuata con l'algoritmo di Thomas, che vedremo in seguito.
Facciamo un esempio: supponiamo di avere un sistema lineare del tipo
dove è una matrice , mentre e sono due vettori di . Il sistema lineare ammette un'unica soluzione se e solo se . In tal caso abbiamo una formula esplicita per la soluzione (metodo di Cramer):
dove si ottiene dalla matrice sostituendo l'i-esima colonna con il termine noto .
Tuttavia, benché più che soddisfacente dal punto di vista teorico, questa formula è del tutto inutile dal punto di vista pratico. Infatti, per calcolare il determinante di una matrice, bisogna ricorrere alla regola di Laplace, che, per una matrice di ordine , richiede operazioni. Per dare un'idea di cosa questo implichi, supponendo di avere un calcolatore capace di fare un miliardo di operazioni al secondo, per calcolare un solo determinante di una matrice di dimensione 20 occorrerebbero circa 77 anni! Se fosse tridiagonale, l'algoritmo di Thomas risolverebbe il sistema in operazioni. La strategia risolutiva è dunque molto importante.
D'altra parte, questo problema apparentemente semplice può nascondere grosse difficoltà intrinseche legate alla propagazione degli errori. In quasi tutte le applicazioni i coefficienti e il termine noto del sistema non sono conosciuti esattamente, ma solo tramite rilievi sperimentali o risultati di calcoli precedenti approssimati. Un'altra fonte di errore proviene dal fatto che i numeri non possono essere rappresentati sul calcolatore con infinite cifre. Quindi, qualsiasi metodo si utilizzi, non verrà risolto il sistema vero ma un sistema approssimato
dove con e vengono indicate le perturbazioni dovute agli errori. Per comprenderne gli effetti basta ricordare che in Geometria Analitica la risoluzione di un sistema lineare equivale a trovare l'intersezione di due rette nel piano e che eventuali perturbazioni introdotte provocano rotazioni e traslazioni delle rette stesse. Se queste sono quasi perpendicolari, loro piccole roto-traslazioni inducono un piccolo spostamento del punto di intersezione. Viceversa, se le rette sono quasi parallele, a loro piccole modificazioni può corrispondere un sensibile cambiamento del punto di intersezione. Questo può apparire paradossale da un punto di vista teorico. Infatti sappiamo che la soluzione di un sistema lineare è un problema continuo, anzi lineare, per il quale possiamo dire che la variazione delle soluzioni è minore di volte la variazione dei dati. Il fatto è che può essere enormemente grande, rendendo priva di significato questa maggiorazione dell'errore. In più dimensioni la casistica diviene più complessa e si introduce il concetto di condizionamento dei sistemi lineari. In tutte le fasi dello studio di un problema applicativo bisognerà prestare la massima attenzione per evitare l'introduzione di sistemi lineari mal condizionati e per tenerne sotto controllo gli effetti negativi. Questo vale a partire dalla modellizzazione matematica del problema reale alla sua trasformazione in un problema discreto, fino all'utilizzo di accorgimenti ed algoritmi idonei a gestire gli eventuali condizionamenti che non sia stato possibile evitare.
Equazioni non lineari
[modifica | modifica sorgente]Nelle applicazioni ci si trova spesso a dover risolvere equazioni non lineari del tipo
dove è una funzione non lineare, altrimenti la soluzione è banale.
Cercare gli zeri di funzioni generiche è un problema molto complicato; può accadere che non sia possibile trovare una formula chiusa, oppure che tale formula sia troppo dispendiosa dal punto di vista computazionale (come lo è ad esempio la formula di Kramer per la soluzione dei sistemi lineari).
Il lettore potrebbe essere tentato di pensare che poche equazioni richiedano necessariamente un approccio numerico. In realtà, anche per i polinomi, in generale, non esiste una formula chiusa che permetta di ottenere almeno uno degli zeri in funzione dei coefficienti. Nel 1832, infatti, Évariste Galois, matematico francese, la notte prima di morire in un duello, scrisse degli appunti che vennero analizzati successivamente da Liouville. In questi scritti Galois dimostrò che non esistono formule esplicite che permettano di trovare le radici dei polinomi se il grado di questi è superiore al quarto. Questo risultato sancisce la necessità di ricorrere a soluzioni approssimate anche per la ricerca degli zeri dei polinomi, nonostante questi possano sembrare funzioni piuttosto facili da trattare.
Approssimazione di integrali
[modifica | modifica sorgente]Supponiamo di voler calcolare l'integrale
dove soddisfi opportuni criteri di integrabilità (ad esempio sia una funzione continua nell'intervallo ). Come il lettore ben saprà dai primi libri di analisi, non esiste una formula esplicita per l'integrale di ogni funzione. Occorre trovare di caso in caso la soluzione in base alla forma dell'integranda. Integrare è infatti un problema inverso, che richiede particolari abilità ottenibili sono con costante esercizio. Bisogna inoltre considerare che la funzione potrebbe non ammettere una primitiva elementare, come per esempio nel caso della gaussiana
Come vedremo nel sesto capitolo, l'approssimazione degli integrali è molto intuitiva, almeno nella sua formulazione di base in una dimensione, e permette di calcolare integrali di qualunque funzione continua, aggirando quindi il problema, difficoltoso e a priori non necessariamente risolvibile, di trovare una primitiva.