Sei sulla pagina 1di 8

Capitolo 1

Approssimazione di
funzioni e di dati

1.1 Preliminari
In molti problemi matematici nasce l’esigenza di dover approssimare una funzio-
ne f (x), nota analiticamente, oppure nota solo in un insieme discreto di punti,
con una funzione più semplice, scelta in un insieme opportuno. Ad esempio,
nella pratica si presentano i seguenti problemi:

• È necessario operare su una funzione nota analiticamente, ma l’espressione


analitica di f è tale da non permetterci di ottenere il risultato dell’ appli-
cazione dell’ operatore mediante i soli strumenti dell’ Analisi Matematica.
Per esempio, supponiamo di dover calcolare:
Z b
f (x)dx
a

e di non essere in grado di calcolare la primitiva di f .


• La funzione f non è nota analiticamente e sono noti i valori che la funzione
f (x) assume per assegnati valori xi , i = 0 . . . n della variabile indipendente.
In questo caso si vuole ottenere una approssimazione del valore che la
funzione f assume in punti x 6= xi .
• Da misure sperimentali sono state ricavate coppie di valori (xi , yi ), i =
0, . . . , n; si vuole conoscere quale valore assume la variabile dipendente
quando x assume un valore x̄ 6= xi .
In tutte queste situazioni può essere utile approssimare la funzione f con
una funzione più semplice fn e utilizzare fn come “surrogato” di f .
Nel seguito, supporremo di avere a disposizione n+1 coppie di valori (xi , yi ), i =
0, . . . , n. I valori yi potranno essere i valori assunti nei nodi xi da una funzione f

1
nota analiticamente, oppure il risultato di misure sperimentali. Per determinare
la funzione fn approssimante è necessario:
1. Individuare la classe Fn delle funzioni approssimanti.
2. Stabilire un criterio per determinare una particolare funzione in Fn .

Nel seguito considereremo le seguenti classi di funzioni approssimanti:


• La classe Fn = Pn , insieme dei polinomi di grado n.
• La classe delle funzioni Spline, ovvero funzioni polinomiali a tratti, conti-
nue, con derivate continue di ordine ≤ n − 1.

La scelta della funzione fn , una volta determinata la classe delle funzioni ap-
prossimanti, è generalmente fatta seguendo uno dei seguenti criteri:
• Interpolazione: si richiede che l’approssimante fn soddisfi le seguenti con-
dizioni di interpolazione:

fn (xi ) = yi i = 0, . . . , n.

In genere, il numero dei parametri presenti in fn è uguale al numero n + 1


di coppie di punti.
• Minimi quadrati: come funzione fn (x) scegliamo l’elemento f˜n , di Fn tale
che
Xn  2 Xn
2
f˜n (xi ) − yi = min (fn (xi ) − yi ) .
fn ∈Fn
i=0 i=0

1.2 Interpolazione Polinomiale


Sia Fn ≡ Pn . Dati [a, b] e n + 1 coppie di valori (xi , yi ), i = 0, . . . , n, vogliamo
determinare il polinomio pn ∈ Pn tale che

pn (xi ) = a0 + a1 xi + . . . + an xni = yi i = 0, . . . , n. (1.1)

I punti xi i = 0 . . . n sono detti nodi di interpolazione. Le n + 1 condizioni date


dalla (1.1) possono essere espresse nella forma:
n

 a0 + a1 x0 + . . . + an x0n = y0

 a0 + a1 x1 + . . . + an x1n = y1



a0 + a1 x2 + . . . + an x2 = y2
 ..
.




a0 + a1 xn + . . . + an xnn = yn

Ovvero
V a = y, (1.2)

2
dove a = (a0 , a1 , . . . , an )T , y = (y0 , y1 , . . . , yn )T e la matrice V :
1 x0 . . . xn0
 
 1 x1 . . . xn1 
V = . .
 
.. .. 
 .. .. . . 
1 xn ... xnn

è la classica matrice di Vandermonde. È noto che il determinante di V è dato


da: Y
det(V ) = (xi − xj ).
i>j
i=0,...,n
j=0,...,n

Quindi, se xi 6= xj , ∀i, j ∈ {0, . . . , n}, la matrice V è invertibile. Pertanto il


precedente sistema lineare ammette una ed una soluzione. Abbiamo pertanto
dimostrato il seguente teorema:
Teorema 1. Dati n + 1 punti distinti xi , i = 0, . . . , n e n + 1 corrispondenti
valori yi , i = 0, . . . , n, esiste un unico polinomio pn ∈ Pn tale che pn (xi ) =
yi , i = 0, . . . , n.

1.3 Base di Lagrange


Nella trattazione finora svolta abbiamo considerato il polinomio pn espresso
nella base monomiale: < 1, x, x2 , . . . , xn > di Pn . Cerchiamo adesso una base
di Pn diversa dalla base monomiale. In particolare, vogliamo determinare n + 1
funzioni
lj (x) ∈ Pn , j = 0, . . . , n, (1.3)
tali che: 
lj (xi ) = 1 se i = j
(1.4)
lj (xi ) = 0 se i 6= j, i = 0, . . . , n.
Osserviamo, prima di tutto, che un insieme di polinomi l0 (x), l1 (x), . . . , ln (x)
soddisfacenti la (1.4), formano una base di Pn . Infatti, supponiamo che esistano
c0 , c1 , . . . , cn non tutti nulli, tali che
c0 l0 (x) + . . . + cn ln (x) ≡ 0.
Allora avremo
c0 l0 (x0 ) + . . . + cn ln (x0 ) = 0
che implica c0 = 0. Possiamo ripetere il ragionamento per j = 1, . . . , n ricavando
cj = 0, j = 0, . . . , n, che contraddice la nostra ipotesi. Quindi l0 (x), l1 (x), . . . , ln (x)
sono linearmente indipendenti.
I seguenti polinomi, detti polinomi di Lagrange
Qn
i=0 (x − xi )
i6=j
lj (x) = Qn
i=0 (xj − xi )
i6=j

3
soddisfano le condizioni (1.3) e (1.4). Costituiscono pertanto una base di Pn .
Introducendo il polinomio

ωn (x) = (x − x0 )(x − x1 )(x − x2 ) . . . (x − xn ) (1.5)

possiamo riscrivere i polinomi lj nella seguente forma:

ωn (x)
lj (x) = Qn
(x − xj ) i=0 (xj − xi )
i6=j

Data la proprieta (1.4), il polinomio pn interpolante i valori yi nei nodi xi ,


i = 0, . . . , n, avrà la forma seguente:
n
X
pn (x) = yi li (x). (1.6)
i=0

Il seguente algoritmo valuta, nel punto z, il polinomio pn , espresso nella


forma (1.6), interpolante i dati (xi , yi ), i = 0, . . . , n.
Dati: z, n, (xi , yi ), i = 0, . . . , n
1. Poni s = 0
2. Poni w = (z − x0 ).
3. Per i = 1, . . . , n
| 3.1 Poni w = w(z − xi )
4. Per j = 0, . . . , n
| 4.1 Se z = xj allora
| | Poni l = 1
| | altrimenti
| | Poni l = 1
| | Per i = 0, . . . , n
| | | Se i 6= j allora poni l = l(xj − xi )
| | Poni l = 1/l
| | Poni l = l(w/(z − xj ))
| Poni s = s + lyj
5. Uscita: s (contiene il valore di pn (z)).

Osserviamo che utilizzando la base di Lagrange, anzichè la base monomiale,


non abbiamo bisogno di risolvere un sistema lineare per valutare il valore che
il polinomio interpolante pn assume in un punto z. Chiaramente, il costo del
procedimento è scaricato sulla costruzione dei polinomi di Lagrange. Il prece-
dente algoritmo richiede n moltiplicazioni per calolare la quantità w ≡ ωn (z) e
n moltiplicazioni, n addizioni e 1 divisione per calcolare ciascun lj (z). Pertanto
richiede un O(n2 ) operazioni. Considerando che la risoluzione di un sistema li-
neare richiede O(n3 ) operazioni e che la matrice di Vandermonde, può risultare
mal condizionata, l’ utilizzo della base di Lagrange è da preferire all’ utilizzo
della base monomiale.

4
1.4 Errore di interpolazione
Sia f (x) ∈ C n+1 [a, b] e sia pn (x) il polinomio interpolante f (x) nei nodi xi ,
i = 0, . . . , n. Vogliamo valutare l’ errore di interpolazione che si commette
considerando, in un generico punto x̄ 6= xi , i = 0, . . . , n, in luogo di f (x̄) il
valore pn (x̄). Consideriamo pertanto funzione:

en (x) = f (x) − pn (x).

Tenendo presente che

en (xi ) = 0 i = 0, . . . , n,

consideriamo la funzione Rn (x) tale che

en (x) = ωn (x)Rn (x)

dove ωn (x) è data dalla (1.5). Allora, dato x̄ ∈ [a, b], la funzione

g(t) = f (t) − pn (t) − ωn (t)Rn (x)

è tale che g(xi ) = 0 per i = 0, . . . , n e g(x̄) = 0. Ovvero, g(t) ha almeno n + 2


zeri. Quindi, g 0 (t) ha almeno n + 1 zeri, g 00 (t) ha almeno n zeri, e di conseguenze
g n+1 (t) ha almeno 1 zero. Pertanto ∃ ξ ∈ [a, b] tale che g n+1 (ξ) = 0, ovvero,

g n+1 (ξ) = f n+1 (ξ) − 0 − (n + 1)! · Rn (x) = 0

Da questo segue che


f n+1 (ξ)
Rn (x) =
(n + 1)!
e
f n+1 (ξ)
en (x̄) = ωn (x̄) .
(n + 1)!
In generale, per ogni x ∈ [a, b], avremo quindi:

f n+1 (ξx )
en (x) = ωn (x) , (1.7)
(n + 1)!
dove il punto ξx varia al variare di x.
L’errore di interpolazione dipende quindi sia dalla distribuzione dei nodi che
dalla funzione da interpolare. Analizziamo adesso il comportamento dell’ errore
di interpolazione quando n → ∞. Prima di tutto, possiamo notare che se la
funzione f ∈ C ∞ [a, b] e

∃M > 0 : max |f n+1 (x)| < M ∀n,


x∈[a,b]

ovvero se le derivate della f sono uniformemente limitate in [a, b], allora

lim max |f (x) − pn (x)| = 0,


n→∞ x∈[a,b]

5
qualsiasi sia la distribuzione di nodi utilizzata. Infatti,
|f n+1 (x)|
|en (x)| ≤ |ωn (x)| max ,
x∈[a,b] (n + 1)!

da cui
M (b − a)n+1
|en (x)| ≤ max |ωn (x)| ≤ M −→ 0.
x∈[a,b] (n + 1)! (n + 1)!
In generale, non è però scontato che
lim max |en (x)| = 0.
n→∞ x∈[a,b]

Non è pertanto scontato che aumentando il grado del polinomio interpolante si


riduca l’errore di interpolazione e quindi si ottenga una migliore approssimazione
della funzione f (x).

1.5 Condizionamento del Problema dell’Inter-


polazione Polinomiale
Esaminiamo adesso come varia il polinomio interpolante al variare dei dati yi , i =
0, . . . , n. Consideriamo quindi due insiemi di n + 1 coppie di nodi: (xi , yi ) e
(xi , ȳi ) con i = 0 . . . n tali che
|yi − ȳi |
max =
i=0...n |yi |
Consideriamo i polinomi pn e p̄n interpolanti i dati (xi , yi ) per i = 0, . . . , n e
(xi , ȳi ) per i = 0, . . . , n, rispettivamente. Avremo:
n
X n
X
pn (x) = yi li (x) e p̄n (x) = ȳi li (x).
i=0 i=0

Allora,
n n
X X |yi − ȳi |
|pn (x) − p̄n (x)| ≤ |yi − ȳi ||li (x)| = |yi ||li (x)|
i=0 i=0
|yi |
n
X
≤  max |yi | · |li (x)|.
i=0,...,n
i=0

Abbiamo quindi:
max |pn (x) − p̄n (x)| ≤  max |yi |Λn ,
x∈[a,b] i=0,...,n

dove la Costante di Lebesgue Λn è data da


n
X
Λn = max |li (x)|.
x∈[a,b]
i=0

6
Notiamo quindi che maxx∈[a,b] |pn (x)− p̄n (x)| dipende sia dalla variazione relati-
va dei dati, , che dalla quantità Λn . La costante di Lebesgue può pertanto essere
vista come un Coefficiente di amplificazione della variazione sui dati, poichè a
fronte di piccole variazioni relative sui dati  si possono avere anche grandi
variazioni sul polinomio interpolante quando la quantità Λn è grande. In questi
casi il problema dell’ interpolazione polinomiale è mal condizionato1 . È quindi
interessante osservare il comportamento di Λn al variare di n. Osserviamo prima
di tutto che la quantità Λn dipendente esclusivamente dalla distribuzione dei
nodi. Se si usano nodi equidistanti, allora si può dimostrare che
n
Λn ≥ e 2 .

Rimarchiamo, infine, che il valore della costante di Lebesgue cresce al cresce-


re di n, pertanto utilizzare polinomi interpolanti di grado elevato può portare
alla risoluzione di un problema mal condizionato.

1.6 Spline cubiche interpolanti nei nodi


Abbiamo precedentemente visto che, per distribuzioni equispaziate dei nodi di
interpolazione, non si ha garanzia di convergenza uniforme della successione dei
polinomi interpolanti a f per n → ∞. Inoltre, il malcondizionamento del pro-
blema aumenta all’ aumentare di n. D’altra parte, se la funzione f non è nota
analiticamente non è possibile scegliere a priori i nodi di interpolazione (per es.
i nodi di Chebichev) in modo da avere garanzie di convergenza uniforme. È
pertanto naturale considerare una diversa classe Fn di funzioni approssimanti.
Una rilevante classe di funzioni approssimanti è quella delle spline cubiche. Ov-
vero, dati x0 , . . . , xn , nodi distinti, tali che a = x0 < x1 < . . . < xn = b, una
funzione s3 (x) sull’ intervallo [a, b] è detta spline cubica relativa ai nodi xj se
• s3|[xi ,xi+1 ] ∈ P3 , i = 0, . . . , n − 1
• s3 ∈ C 2 [a, b].
Una spline cubica interpolante nei nodi deve inoltre soddisfare le condizioni di
interpolazione:
s3 (xi ) = yi , i = 0, . . . , n.
È immediato osservare che le precedenti condizioni non sono sufficienti a de-
terminare univocamente una spline cubica interpolante nei nodi. Infatti, per
individuare una spline cubica è necessario determinare 4n coefficienti e devo-
no essere imposte 3(n − 1) condizioni per ottenere la continuità della spline e
1 Se a piccole perturbazioni sui dati possono corrispondere grandi perturbazioni sui risultati

parliamo di Problema Mal Condizionato. Lo studio del condizionamento di un problema è


particolarmente rilevante nel contesto dell’ Analisi Numerica. Infatti, a causa degli errori
di arrotondamento sui dati in ingresso e alla propagazione degli errori di arrotondamento,
non possiamo possiamo pensare di calcolare numericamente la soluzione esatta del problema
dato. Pensiamo, ad esempio che sicuramente utilizzeremo dati in ingresso perturbati, con una
perturabazione relativa minore della precisione di macchina.

7
delle sue derivate fino alla seconda nei punti x1 , . . . , xn−1 , e n + 1 condizioni
di interpolazione. Avremo in totale quindi 4n − 2 condizioni e 4n incognite da
determinare. Pertanto, per determinare univocamente la spline è necessario im-
porre altre 2 condizioni aggiuntive. Una scelta comunemente effettuata è quella
di aggiungere le 2 condizioni:
(2) (2)
s3 (x0 ) = s3 (xn ) = 0.

Questa scelta dà luogo alle spline naturali. Secegliendo opportunamente le inco-
gnite per rappresentare s3 (x) si può determinare la spline risolvendo un sistema
lineare (n + 1) × (n + 1) tridiagonale, che per la sua risoluzione richiede un basso
costo computazionale (O(n) operazioni).
Una scelta alternativa a quella delle spline naturali è quella di imporre
che anche la derivata terza sia continua in x1 e xn−1 . Questa scelta è quella
implementata nella funzione predefinita Matlab spline.
Per quanto riguarda l’ errore di interpolazione è possibile dimostrare che, se
f ∈ C 4 [a, b], allora
(r)
max |f (r) − s3 | ≤ Cr H 4−r max |f 4 (x)|, r = 0, 1, 2, 3,
x∈[a,b] x∈[a,b]

dove H = maxi=0,...,n−1 (xi+1 − xi ), e Cr è una costante positiva dipendente


da r. Quindi, si ha convergenza uniforme della spline cubica interpolante nei
nodi alla funzione f , al tendere di H a zero e quindi di n all’ infinito. È inoltre
evidente che, non solo la f , ma anche le sue derivate prima, seconda e terza,
vengono ben approssimate dalla funzione s3 all’ aumentare del numero dei nodi.