Analisi numerica e metodi di integrazione numerica

Analisi numerica e metodi di integrazione numerica
L'analisi numerica (detta anche calcolo numerico o calcolo scientifico) è una branca della matematica
applicata che risolve i modelli prodotti dall'analisi matematica, riducendoli alle scomposizioni finite
normalmente praticabili tramite l’utilizzo di calcolatori, coinvolgendo il concetto di approssimazione. I suoi
strumenti, detti algoritmi, sono caratterizzabili in base a velocità di convergenza, stabilità numerica e
computabilità. In generale, l'analisi numerica è una scienza sia teorica che sperimentale. Infatti usa assiomi,
teoremi e dimostrazioni, come il resto della matematica, ma usa anche i risultati empirici delle elaborazioni
eseguite per studiare i metodi migliori per risolvere i problemi.
In ogni disciplina scientifica e tecnica si creano modelli matematici che approssimano l’evolversi di un evento
oggetto di studio; tale modello permette di simularne il comportamento del fenomeno in esame, e quindi
prevedere lo sviluppo futuro del fenomeno, senza dover effettuare fisicamente esperimenti complessi. Un
esempio si ha nella fluidodinamica computazionale, che si occupa appunto della risoluzione dei modelli
matematici generati con le leggi della fluidodinamica, che descrivono ad esempio l’aerodinamica di un
velivolo o di un automobile: tramite simulazioni al computer, è possibile ricavare la forma delle ali di un
velivolo, costruendo successivamente un prototipo per raffinarne lo sviluppo, riducendo enormemente i costi
e i tempi di sviluppo.
Per eseguire lo studio di un fenomeno naturale, si procede generalmente secondo i seguenti punti:


Una prima fase di modellizzazione del fenomeno in esame, tramite la quale si associa al problema
reale un modello matematico che ne approssimi l’evoluzione. Si consideri il seguente esempio, che
mette in evidenza come un modello matematico, per quanto raffinato che sia, è sempre
un’approssimazione del problema reale, in quanto una modellizzazione senza errori è impossibile,
ma anche inutile perché considererebbe elementi non utili al fine della risoluzione del problema: nel
modello matematico per la costruzione di un ponte, è richiesto il bilancio delle forze esercitate sui
vari elementi del ponte stesso. Non si tiene però conto delle forze gravitazionali esercitate sugli
elementi del ponte dalla luna o dal sole; tali forze sono realmente esistenti e non nulle, e quindi
dovrebbero essere considerate in un modello matematico esatto, ma possono di fatto essere
trascurate in un modello che approssima il problema reale con errori contenuti;
Analisi qualitativa del modello matematico, per determinarne una possibile evoluzione;


Individuazione di metodi e algoritmi di risoluzione del modello in esame ed analisi dell’efficienza degli
stessi;
Implementazione dei metodi di risoluzione precedentemente trovati tramite calcolatore, sfruttando
un adeguato linguaggio di programmazione (C o C++ con librerie adeguatamente sviluppate oppure
un programma di calcolo numerico come Matlab).
Si nota come, i modelli generato dall’analisi matematiche, non sono sempre esprimibili come funzioni
elementari o combinazione delle stesso e non sono risolvibile con un numero finito di passi. Il problema
quindi si sposta dall’analisi simbolica all’analisi numerica che, con un numero finito di passi, sfruttando un
algoritmo appositamente concepito, ricava un valore approssimato della soluzione. L’entità
dell’approssimazione deve naturalmente essere adeguata al problema in esame.
L’analisi numerica ha assunto una notevole importanza e un grande sviluppo con l’avvento dei calcolatori,
che hanno permesso di eseguire calcoli impensabili da svolgere a mano; con l’introduzione dei calcolatori, si
sono quindi trattati problemi con una quantità sempre maggiore di dati, che hanno fatto emergere problemi
si rappresentazione dei dati in un’algebra finita, aprendo le porte alla branca dell’analisi numerica che si
occupa dell’analisi degli errori: si pensi ad esempio come modelli di fluidodinamica posso generare sistemi di
decine di milioni di equazioni.
I campi di studio nei quali si concentra l’analisi numerica possono essere riassunti nei seguenti:








Analisi dell’errore;
Determinazione degli zeri di una funzione polinomiale;
Risoluzione di funzioni non lineari;
Approssimazione di funzioni non lineari con funzioni lineari;
Metodi di risoluzione di sistemi lineari;
Interpolazione ed estrapolazione di funzioni;
Calcolo numerico di derivate di funzioni assegnate;
Integrazione numerica.
Gli errori che si producono durante la risoluzione sono principalmente dovuti al fatto che il calcolatore opera
su dati numerici rappresentati per mezzo di una sequenza finita di cifre, data dalla particolare
rappresentazione di tati in memoria adottata: è detto errore di rappresentazione, e si presenta quando si
inseriscono i dati, quindi ancora prima di eseguire qualunque operazione. La rappresentazione con un
numero finito di cifre impone inoltre l'uso di un'aritmetica approssimata (aritmetica finita) che introduce
errori anche nell'esecuzione delle operazioni aritmetiche stesse. Esistono quindi, per uno stesso problema,
procedimenti di calcolo che possono generare errori in misura diversa. Si sfruttano problemi elementari, dei
quali si conosce l’esatta soluzione, per distinguere facilmente gli algoritmi numericamente instabili, ossia
quelli per cui si presenta una elevata propagazione dell'errore, da quelli numericamente stabili. In generale
nei problemi concreti tale distinzione non è facile ed è quindi molto importante disporre di tecniche per
stabilire a priori se un dato algoritmo è numericamente stabile o instabile.
Trovano quindi notevole importanza, nell’ambito dell’analisi numerica, lo studio del condizionamento di un
problema, della stabilità numerica di un algoritmo, della complessità computazionale di un problema, e delle
questioni legate alla discretizzazione di un problema continuo. Infatti i problemi di analisi matematica hanno
generalmente natura continua, e devono essere discretizzati perché gli algoritmi di risoluzione numerica
hanno carattere discreto poiché sono finiti. Un algoritmo si dice numericamente stabile se un errore, una
volta che è stato generato, non cresce troppo durante il calcolo. Per alcuni problemi non esistono algoritmi
stabili, in quanto per variazioni arbitrariamente piccole dei dati del problema, la soluzione varia comunque
di molto. Tali problemi sono detti mal condizionati.
Per quanto riguarda le equazioni di primo e secondo grado esistono soluzioni dirette semplici, date dalle
formule generalmente note. Per le equazioni di terzo e quarto grado, esistono ancora formule che
permettono la risoluzione esatta, esprimibile come funzioni razionali ed irrazionali, ma sono formule
complesse e di elevato costo computazionale (richiedono ad esempio la valutazione di complesse radici
cubiche). Queste formule non vengono quindi generalmente utilizzate e si ricorre ai metodi dell’analisi
numerica per la risoluzione di tali funzioni. I metodi dell’analisi numerica permettono di determinare la
risoluzione del polinomio, quindi gli zeri dello stesso, in un numero di iterazioni dell’algoritmo tali da ottenere
l’approssimazione richiesta dal problema in esame: infatti, tutti i metodi utilizzati, devono convergere alla
soluzione esatta quando il numero di iterazioni tendere ad infinito: in tali situazioni, l’algoritmo di dice
convergente, in quanto, ad un aumento del numero di iterazioni dello stesso, si giunge sicuramente ad un
approssimazione migliore della soluzione esatta del problema. Si usa naturalmente un numero di passi tale
per cui, data una stima dell’errore commesso (difficilmente determinabile, ma stimabile, perché non si
conosce generalmente il risultato esatto), si abbia un valore finale determinato con un approssimazione
minore di quella richiesta. Per le equazione di grado pari o superiore al quinto, non sono presenti metodi di
risoluzione generale, ma soltanto per alcuni casi semplificati; per metodi di risoluzione generale, si intendono
relazioni che esprimano la soluzione come una qualunque combinazione delle quattro operazioni
fondamentali, dell’elevamento a potenza e dell’estrazione di radice. Il teorema fondamentale dell'algebra
implica che ogni equazione di quinto grado abbia esattamente cinque soluzioni nei numeri complessi e, per
vari secoli, la ricerca di una formula risolutiva per queste equazioni è stata uno dei problemi matematici più
studiati, fino a quanto non si dimostrò l’inesistenza di tale formula generale (teorema di Abel-Ruffini).
Molte equazioni presentano soluzioni che non sono determinabili con metodi algebrici, come ad esempio
molte funzioni trascendentali che non sono riconducibili alle forme elementare di cui sono note le risoluzioni
simboliche o che, tali risoluzioni, non sono numericamente valutabili in quanto richiedono la determinazione
del valore di alcune funzioni non note, se non con approssimazioni numeriche (si pensi ad esempio alle
funzioni trigonometriche inverse). Per la risoluzione di tali equazioni, si usano gli stessi metodi delle funzioni
polinomiali, precedentemente descritte, in quanto per risoluzione di una funzione si intende la
determinazione degli zeri della stessa.
Un problema che frequentemente si presenta in matematica applicata è quello dell'approssimazione di
funzioni, che consiste nel determinare una funzione g(x), appartenente ad una classe prescelta di funzioni,
che meglio approssima una funzione data f(x). La funzione di partenza è una funzione nota della matematica,
in generale non razionale. Lo scopo è quello di produrre una funzione più semplice, cioè più facilmente
trattabile (ad esempio più facilmente calcolabile, derivabile o integrabile) della funzione di partenza.
Nella risoluzione di sistemi di equazioni, svolge un ruolo determinante la determinazione del costo
computazionale di un determinato algoritmo, in quanto sono generalmente problemi contenenti decine di
migliaia di equazioni, se non milioni, quindi si punta ad utilizzare metodi sempre più efficienti che convergano
più velocemente alla soluzione esatta, o meglio, ad una sua adeguata approssimazione. I metodi diretti
costruiscono l'esatta soluzione, a meno di errori di arrotondamento e di rappresentazione, in un numero
finito di passi. I metodi iterativi conducono alla soluzione del sistema in un numero teoricamente infinito di
passi: partendo da un'approssimazione iniziale della soluzione, forniscono una serie di approssimazioni che,
sotto opportune ipotesi, convergono alla soluzione esatta. Il processo iterativo viene arrestato non appena
la precisione desiderata è stata raggiunta.
I metodi di interpolazione stimano il valore di una funzione incognita dato il valore della funzione stessa in
alcuni punti: tale situazione si verifica molto spesso nella matematica applicata, quando si hanno dati
sperimentali, che caratterizzano un dato fenomeno, da analizzare. Il più semplice metodo di interpolazione
è l'interpolazione lineare, che suppone che la funzione sconosciuta sia lineare fra ogni coppia di punti
consecutivi. Si hanno poi metodi più complessi, che approssimazione l’andamento della funzione con dei
polinomi di determinato grado, che possono o meno passare per tutti i punti sperimentalmente trovati (tale
condizione non è generalmente rispettata perché richiederebbe un funzione di elevato grado, che
assumerebbe un comportamento oscillatorio all’aumentare del grado; generalmente quindi si minimizza la
distanza dai dati sperimentali alla funzione interpolante). L'estrapolazione, a differenza dall'interpolazione,
stima la funzione in punti esterni ai punti per cui la funzione è nota.
Il calcolo della derivata puntuale di una funzione può essere approssimato dal suo rapporto incrementale,
scegliendo un opportuno valore del passo di incremento, tale da avere un errore minore di quello voluto e
avere un tempo di risoluzione, quindi un numero di calcoli, adeguato al problema in esame.
L'integrazione numerica, nota anche come quadratura numerica, stima il valore di un integrale definito. Un
integrale definito è determinabile per via analitica tramite la valutazione dell’integrale indefinito ai due
estremi in integrazione (come conseguenza del teorema fondamentale del calcolo integrale), tuttavia
l’integrale indefinito non sempre è calcolabile con i metodi classici dell’analisi matematica, oppure
l’espressione finale ottenuta, rispetto a quella di partenza, è talmente complicata da suggerire la ricerca
approcci più semplici. Inoltre l’eventuale soluzione analitica potrebbe coinvolgere funzioni elementari e non,
che devono poi venire valutate (e quindi approssimate). Tali considerazioni valgono per funzioni continue,
ma se invece la funzione è nota solo per punti, l’approccio analitico, per ovvi motivi, non può neppure essere
preso in considerazione.
L’integrazione numerica si applica solo ad integrali definiti e permette sempre di giungere ad una soluzione,
seppur approssimata, del problema; tali risoluzioni si prestano bene ad essere rappresentate come algoritmi,
e quindi ad essere eseguite mediante calcolatori.
I metodi utilizzati per la quadratura numerica (nome con il quale è anche conosciuta l’integrazione numerica),
si basano sul significato geometrico di integrale definito, quindi sul calcolo dell’area, in modo approssimato,
del trapezoide che la funzione forma con l’asse delle ascisse. I metodi di quadratura più comuni sono i
seguenti:




Metodo dei rettangoli;
Metodo dei trapezi o di Bézout;
Metodo delle parabole o di Cavalieri – Simpson;
Se la dimensione del dominio di integrazione diventa elevata, questi metodi diventano
proibitivamente costosi in termini di calcolo computazione, quindi di tempi di esecuzione
dell’algoritmo al calcolatore. In questa situazione si può usare un metodo Monte Carlo.
Si vuole determinare in modo numerico il valore dell’integrale definito dato dalla seguente espressione:
𝑏
∫ 𝑓(𝑥) 𝑑𝑥
𝑎
Per tutti i metodi di integrazione descritti nel seguito si considerano valide le seguenti ipotesi:


Funzione f(x) continua nell’intervallo di integrazione [a; b];
f(x) positivo in [a; b], anche se valgono le stesse condizioni nel caso la funzione fosse negativa.
Si procede dividendo l’intervallo di integrazione [a; b] in n parti di uguale ampiezza, data da:
ℎ=
𝑏−𝑎
𝑛
Dove b-a è l’ampiezza dell’intervallo h e n il numero di divisioni dello stesso. Si determinano quindi n+1 punti
di ascisse di coordinate:
𝑥0 = 𝑎, 𝑥1 = 𝑎 + ℎ, 𝑥2 = 𝑎 + 2ℎ, … 𝑥𝑛 = 𝑎 + 𝑛 ℎ
Per il metodo dei rettangoli, alle ascisse precedentemente calcolate, si fanno corrispondere i seguenti valori
della funzione:
𝑦0 = 𝑓(𝑎), 𝑦1 = 𝑓(𝑥1 ), 𝑦2 = 𝑓(𝑥2 ), … 𝑦𝑛−1 = 𝑓(𝑥𝑛−1 ), 𝑦𝑛 = 𝑓(𝑏)
Il metodo dei rettangoli si basa sulla costruzione di una serie di rettangoli, chiamati rispettivamente
plurirettangoli, che hanno come base un intervallo di suddivisione e come altezza il segmento determinato
dal valore della funzione calcolato nel primo estremo dell’intervallo preso come base, oppure nel secondo.
Nel primo caso si ha un valore che approssima per difetto il valore reale dell’integrale, mentre nel secondo
per eccesso. Siccome si suppone che la funzione presa in esame sia integrabile, le due somme convergono
allo stesso valore, pari appunto al valore dell’integrale stesso, al tendere di n all’infinito, ovvero al limite
dell’intervallo h tendente a zero. La differenza fra questi due valori può quindi essere resa piccola a piacere
aumentando opportunamente il numero degli intervalli di suddivisione.
Si ottengono quindi le due successioni come:
𝑛−1
𝑆𝑛′
𝑏−𝑎
𝑏−𝑎
[𝑓(𝑎) + 𝑦1 + 𝑦2 + ⋯ + 𝑦𝑛−1 ] =
=
∑ 𝑓(𝑥𝑖 )
𝑛
𝑛
𝑖=0
𝑛
𝑆𝑛′
𝑏−𝑎
𝑏−𝑎
[𝑦1 + 𝑦2 + ⋯ + 𝑦𝑛−1 + 𝑓(𝑏)] =
=
∑ 𝑓(𝑥𝑖 )
𝑛
𝑛
𝑖=1
Si può dimostrare che, se la funzione ammette derivata prima continua, l’errore connesso alla
determinazione dell’integrale è minore od uguale alla quantità:
𝜀𝑛 =
(𝑏 − 𝑎)2
𝑀
2𝑛
Dove M rappresenta il massimo del valore assoluto della derivata prima della funzione nell’intervallo [a; b];
In simboli si ha:
𝑀 = max |𝑓 ′ (𝑥)|
𝑎≤𝑥≤𝑏
Come esempio si consideri la funzione:
3
∫ 𝑥 3 𝑑𝑥
2
Si fissa 𝑛 = 10, quindi si ottiene la seguente tabella di ascisse e corrispondenti valori della funzione:
a
b
n
h
Xi
Y1
2
3
10
0,1
2
2,1
2,2
2,3
2,4
2,5
2,6
2,7
2,8
2,9 3
8 9,261 10,648 12,167 13,824 15,625 17,576 19,683 21,952 24,389 27
S'n 15,3125
Sn 17,2125
I dati sono stati ottenuti mediante un foglio Excel, utilizzando le formule precedentemente esposte. I due
valori che approssimano l’integrale sono quindi:
3
∫ 𝑥 3 𝑑𝑥 ≅ 15.3125
2
3
∫ 𝑥 3 𝑑𝑥 ≅ 17.2125
2
Il metodo dei trapezi, al posto che sostituire la funzione da integrare con delle rette orizzontali, la sostituisce
un delle corde sottese, ovvero con dei segmenti che congiungono i punti del grafico della funzione
corrispondenti al primo e al secondo estremo dell’intervallo di suddivisione considerato. Si ottengono così n
trapezi aventi tutti uguale altezza, pari a h. Si determina il valore approssimato dell’integrale, come
precedentemente fatto per il metodo dei rettangoli, come la somma di tutte le aree dei singoli trapezi. Si
ottiene così la seguente formula dei trapezi:
𝑏
∫ 𝑓(𝑥) 𝑑𝑥 ≅ ℎ
𝑎
=
𝑓(𝑎) + 𝑦1
𝑦1 + 𝑦2
𝑦𝑛−1 + 𝑓(𝑏)
+ℎ
+ ⋯+ ℎ
=
2
2
2
𝑏 − 𝑎 𝑓(𝑎) − 𝑓(𝑏)
[
+ 𝑦1 + 𝑦2 + ⋯ + 𝑦𝑛−1 ]
𝑛
2
Se la funzione ammette derivata seconda continua, si dimostra che l’errore connesso al metodo numerico
in esame, è minore od uguale alla quantità:
𝜀𝑛 =
(𝑏 − 𝑎)3
𝑀
12𝑛2
Dove M rappresenta il massimo del valore assoluto della derivata seconda della funzione nell’intervallo [a;
b]; In simboli si ha:
𝑀 = max |𝑓 ′′ (𝑥)|
𝑎≤𝑥≤𝑏
Considerando l’esempio del precedente integrale definito, si ottiene, sempre tramite calcolo con foglio
elettronico:
3
∫ 𝑥 3 𝑑𝑥 ≅ 16.2625
2
Il metodo delle parabole consiste nell’approssimazione del grafico della funzione con archi di parabola
opportunamente scelti. Come noto, una parabola può essere individuata da tre punti non allineati, quindi
ciascun arco approssimante è individuato da tre punti del grafico. Il valore approssimato dell’integrale si
calcola come mostrato precedentemente per gli altri due metodi analizzati, ovvero sommando le aree dei
trapezoidi delimitati da tali archi di parabola.
Si può dimostrare (teorema) che, l’area S di un trapezoide avente come base l’intervallo [𝑥0 ; 𝑥2 ] e delimitato
dal grafico di una parabola passante per i punti (𝑥0 ; 𝑦0 ), (𝑥1 ; 𝑦1 ), (𝑥2 ; 𝑦2 ) dove
𝑥1 =
𝑥0 + 𝑥2
2
È il punto medio dell’intervallo, è data dalla seguente formula:
𝑆=
ℎ
(𝑦 + 4𝑦1 + 𝑦2 )
3 0
Dove
ℎ = 𝑥1 − 𝑥0 = 𝑥2 − 𝑥1
Da notare che, rispetto ai metodi precedenti, tale approssimazione richiede la suddivisione dell’intervallo di
integrazione in un numero pari di sottointervalli, in quanto si approssimazione la funzione con una parabola
ogni due sottointervalli. Si considerano quindi 2n parti di uguale ampiezza h, data da:
ℎ=
𝑏−𝑎
2𝑛
Si considerano due intervalli per volta e si applica la formula data dal precedente teorema, calcolando l’area
delimitata dagli archi di parabola passanti per ciascuna terna di punti:
ℎ
ℎ
[𝑓(𝑎) + 4𝑦1 + 𝑦2 ], (𝑦2 + 4𝑦3 + 𝑦4 ), …,
3
3
ℎ
[𝑦
+ 4𝑦2𝑛−1 + 𝑓(𝑏)]
3 2𝑛−2
La somma delle precedenti aree permette di ottenere la forma generale di Cavalieri – Simpson:
𝑏
∫ 𝑓(𝑥) 𝑑𝑥 ≅
𝑎
ℎ
[𝑓(𝑎) + 𝑓(𝑏) + 2 (𝑦2 + 𝑦4 + ⋯ + 𝑦2𝑛−2 ) + 4 (𝑦1 + 𝑦3 + ⋯ + 𝑦2𝑛−1 )]
3
Se la funzione ammette derivata quarta continua, si dimostra che l’errore connesso è minore od uguale alla
quantità data da:
𝜀𝑛 =
(𝑏 − 𝑎)5
𝑀
2880𝑛4
Dove M rappresenta il massimo del valore assoluto della derivata quarta della funzione nell’intervallo [a; b];
In simboli si ha:
𝑀 = max |𝑓 𝐼𝑉 (𝑥)|
𝑎≤𝑥≤𝑏
La formula di Cavalieri – Simpson permette di giungere, con un numero di passi minore, al valore di
approssimazione desiderato. Se si osservano le espressioni che determinano l’errore massimo commesso in
funzione del numero di intervalli di suddivisione della funzione precedentemente date, si nota come, il
denominatore della seconda sia maggiore di quello della prima, ma minore di quello della seconda: si
conclude che l’ultimo metodo esposto converge in un numero minore di passi al valore esatto della funzione
rispetto ai precedenti. Tale formula fornisce quindi in generale il valore più vicino a quello atteso.
Se si osservano con attenzione i metodi precedentemente esposti, si conclude che differiscono soltanto per
la modalità con la quale si approssima la funzione integranda: più in particolare, lo scopo di tali metodi
numerici è quello di spostare il calcolo dell’area ad un problema più semplice, determinabile tramite funzioni
elementari già note.
Per quanto riguarda l’implementazione dei problemi relativi al calcolo numerico, si hanno almeno tre
categorie di software numerico:



Librerie per programmatori (Netlib, IMSL, NAG, GNU Scientific Library, BLAS, LAPACK, FFTw);
Ambienti interattivi per risolvere problemi della matematica e delle scienze computazionali
(Mathematica, MATLAB, Maple, Scilab, GNU Octave, IDL) detti Problem Solving Enviroments (PSE);
Applicazioni per risolvere problemi di particolari aree applicative, ad esempio per l'ingegneria
(software CAE).
Gli algoritmi di analisi numerica sono applicati quotidianamente per risolvere molti problemi scientifici e
tecnici. Ne sono esempi la progettazione di strutture come ponti e aeroplani, le previsioni meteorologiche e
l'analisi di molecole (chimica computazionale). Gli algoritmi di analisi numerica sono anche alla base dei
programmi di CAE, e quasi tutti i supercomputer sono costantemente impegnati a eseguire algoritmi di analisi
numerica. Un esempio su tutti, considerato come il classico successo dell’analisi matematica, consiste
nell’algoritmo FFT (trasformata veloce di Fourier) utilizzato in moltissimi ambiti della tecnica, quali, soltanto
per citarne alcuni, la risonanza magnetica, il riconoscimento di immagini di tomografia assiale e la
compressione di immagini, musica e video, nei più comuni conosciuti dagli utenti.