Approssimazione di dati e funzioni: generalità

Transcript

Approssimazione di dati e funzioni: generalità
Approssimazione di dati e funzioni: generalità
Problema: approssimazione di una funzione f(x):
– noti gli {fi } valori che la funzione assume nei punti {xi }, i=0,…,n si
vuole ottenere una rappresentazione analitica della funzione in un
intervallo [a,b] (in genere contenente gli {xi });
– l’espressione analitica della f(x) è nota ma complicata per le
operazioni che si intendono effettuare (ad es. integrazione), se ne
richiede una rappresentazione più semplice.
In generale nota la tabella dei dati {xi , fi }, i=0,…,n si vuol
trovare una funzione analitica che approssimi i dati.
Per la funzione interpolante è necessario:
– selezionare la classe di funzioni F alla quale deve appartenere;
– scegliere un criterio per la selezione di una funzione tra quelle della
classe F (metodo di approssimazione).
Approssimazione di dati e funzioni: classi
1) Pn – insieme dei polinomi algebrici pn di grado n a coefficienti reali:
{
Pn = pn | pn ( x) = an x n + an −1 x n −1 + L + a1 x + a0 ; ak ∈ ℜ, ∀k
}
2) Πn – insieme dei polinomi trigonometrici tn di ordine n a coeff. reali:
{
Π n = t n | t n ( x) = ∑k =0 [ak cos(kx) + bk sin(kx)]; (ak , bk ) ∈ ℜ, ∀k
n
}
3) Rn,m – insieme delle funzioni razionali:
R n ,m = {rn ,m | rn ,m ( x) = pn ( x) / pm ( x); pn ( x) ∈ Pn , pm ( x) ∈ Pm }
4) En – insieme delle funzioni esponenziali:
{
E n = g n | g n ( x) = ∑k =1 ak exp(bk x ); (ak , bk ) ∈ ℜ, ∀k
n
}
5) Sn([a,b],∆) – insieme delle funzioni spline di grado n, ovvero delle
n-1
funzioni di C , che si riducono a polinomi algebrici di grado n in ogni
sottointervallo di misura ∆ di [a,b].
Approssimazione di dati e funzioni: metodi
a) Interpolazione, la funzione approssimante fn(x) è tale che:
f n ( xi ) = f i
i = 0, K , n
Condizioni di interpolazione
normalmente impiegata se i dati iniziali sono accurati;
b) Approssimazione ai minimi quadrati discreti: la funzione approssimante fm(x) è quella che renda minima la quantità:
2
[
]
f
(
x
)
−
f
∑i=0 m i i
n
Scarto quadratico
ovvero, introdotti i pesi wi:
∑i=0 wi [ f m ( xi ) − fi ]
n
2
Scarto quadratico pesato
metodo usualmente impiegato se i dati a disposizione sono in numero
elevato, la seconda si preferisce se è noto, a priori, l’esistenza di valori
ai quali si vuol dare un peso maggiore.
App. di dati: interpolazione polinomiale
Interpolazione polinomiale: fornita la tabella di dati {xi ,fi},
i=0,…,n, si cerca una funzione di approssimazione appartenente alla classe dei polinomi algebrici che interpoli i dati;
si cerca il polinomio di grado minimo che soddisfi le condizioni di interpolazione:
pn ( xi ) = f i
i = 0, K , n
n+1 dati => polinomio di grado n; sviluppando:

∑ ak xik = f i
 k =0
 i = 0, K, n
n
 1 x0
1 x
1
⇔ VA = F ⇔ 
L L
 1 xn
x02 L x0n   a0   f 0 
x12 L x1n   a1  =  f1 

L L L  M   M 
xn2 L xnn  an   f n 
dove le incognite sono i coefficienti del polinomio pn(x).
Interpolazione polinomiale: Vandermonde
La matrice V dei coefficienti del sistema algebrico è detta
matrice di Vandermonde; per la matrice di Vandermonde di
n+1 nodi distinti {xi }, i=0,…,n, si dimostra che:
det(V ) = ∏ (xi − x j ) ≠ 0
j >i
Pertanto V è regolare, quindi esiste una unica soluzione del
sistema e quindi il polinomio interpolatore è unico.
Teorema: esiste uno ed un solo polinomio pn(x)∈Pn, che verifica le condizioni di interpolazione pn(xi)=fi per i=0,…,n.
Problema: la matrice di Vandermonde generalmente è
malcondizionata.
Interpolazione polinomiale: basi
Il polinomio interpolatore è unico ma può assumere espressioni
diverse, basta cambiare la base del polinomio interpolatore:
– polinomio algebrico. base dei monomi:
pn ( x) = ∑k =0 ak xk
n
⇔
{1, x, x , K, x
2
n −1
, xn
}
– formula di Lagrange, polinomi di base di Lagrange:
Ln ( x) = ∑k =0 bk lk ( x) ⇔
n
{ l0 ( x), l1 ( x), K, ln−1 ( x), ln ( x) }
Data l’unicità del polinomio interpolatore, è ovvio che:
pn ( x) = Ln ( x)
Base di Lagrange: formula di Lagrange
Dati gli n+1 nodi {xi }, i=0,…,n, gli n +1 polinomi di base di
Lagrange sono definiti come polinomi di grado n, tali che:
1 i=k

lk ( xi ) = δ ik = 
0 i ≠ k
n
⇔ lk ( x ) = ∏
j =0
j ≠k
x − xj
xk − x j
Dalla quale ne segue che Ln(xk)=fk: e pertanto per il polinomio
interpolatore nella base {li }, i=0,…,n, assume l’espressione di
Lagrange:
n
Ln ( x) = ∑k =0 f k lk ( x)
– esplicita comparsa dei valori nodali della funzione;
– base indipendente dai valori nodali della funzione;
– formula esatta per polinomi di grado minore o uguale ad n;
– posto f(x)=1 => ∑li(x)=1,∀x∈ℜ.
Base di Lagrange: espressione alternativa
Data la tabella {xi , fi}, i=0,…,n, e definendo il polinomio
nodale πn(x) come:
n
π n ( x ) = ∏ ( x − xk )
k =0
la cui derivata prima assume la forma:
π n′ ( x) x = x =
i
π n ( x)
(x − xi ) x= x
i
⇔ wi ( x) =
π n ( x)
(x − xi )
si ottiene che i polinomi della base di Lagrange possono essere
espressi come:
w ( x)
li ( x) = i
π n′ ( xi )
Interpolazione polinomiale: errori
Nella procedura di int. pol. sono presenti i seguenti errori:
– Errore di troncamento, dovuto alla sostituzione della funzione
analitica con un polinomio interpolante:
En ( x) = f ( x) − pn* ( x)
dove con p*n(x) si è indicato il polinomio interpolatore ideale, cioè il
polinomio interpolare in assenza dell’
– Errore di propagazione, dovuto a gli errori di misura o di
approssimazione sui dati (εi=fi−f (xi)):
En* ( x) = pn* ( x) − pn ( x)
Per cui l’errore totale è esprimibile come:
Et ( x) = f ( x) − pn ( x) = f ( x) − pn* ( x) + pn* ( x) − pn ( x) =
= En ( x) + En* ( x)
Int. polinomiale: errore di troncamento
Per l’errore di troncamento nell’int. pol., si dimostra che:
f (n +1) (ξ ( x) )
En ( x ) = π n ( x )
(n + 1)!
ξ ( x ) ∈ [ a, b]
n
π n ( x ) = ∏ ( x − xk )
k =0
dove [a,b] è l’intervallo chiuso minimo contenente i nodi ed il
punto di interpolazione x. Il punto ξ(x) non è noto a priori e dipende da x; nel caso siano noti (o stimati) i valori estremi della
derivata n+1-esima di f(x):
Λπ n ( x)
 λπ n ( x)
≤ En ( x ) ≤
π n ( x) > 0

n +1
(
)
(
)
+
n
1
!
+
n
1
!
λ ≤ f (x ) ≤ Λ

⇒ 
x ∈ [ a, b]
 λπ n ( x) ≥ E ( x) ≥ Λπ n ( x) π ( x) < 0
n
 (n + 1)!
(n + 1)! n
M π n ( x)
f n +1 ( x ) ≤ M
⇒ En ( x ) ≤
(n + 1)!
x ∈ [ a, b]
Errore di troncamento: esempio
Nodi equispaziati: xi=x0+ih, i=0,…,n; detta s una variabile continua tale che: x=x0+sh, per s=0,…,n coincida con xi=x0+ih, per
i=0,…,n, si ha:
π n ( x) = ( x − x0 )( x − x1 ) L ( x − xn ) = s( s − 1) L ( s − n)h n +1 = Pn ( s)h n +1
5
1000
5
P7(s)
800
600
3
2
200
1
0
0
-200
-1
-400
-2
-600
-3
-800
-4
0
1
2
3
4
P10(s)
4
400
-1000
-1
x 10
5
6
7
8
• Esercizio consigliato [GL] 3.12
-5
-1
0
1
2
3
4
5
6
7
8
9
10
11
Int. polinomiale: errore di propagazione
Per l’errore di propagazione si ha:
n
n
E ( x) = p ( x) − pn ( x) = ∑ li ( x) f ( xi ) − ∑ li ( x) f i =
*
n
*
n
i =0
n
i =0
n
= ∑ li ( x)( f ( xi ) − f i ) = −∑ ε i li ( x)
i =0
i =0
Se |ει|≤ε si ha:
n
E ( x) ≤ ε ∑ li ( x) = εΛ( x)
*
n
i =0
n
Λ( x) = ∑ li ( x) ≥ 1 (!!!!)
i =0
Dove Λ(x) è la funzione di Lebesgue e rappresenta il coefficiente di amplificazione degli errori sui dati; si definisce
costante di Lebesgue la quantità:
Λ n = max Λ( x)
a ≤ x ≤b
Funzione di Lebesgue: proprietà
Per la funzione di Lebesgue si ha che:
– dipende solo dai polinomi fondamentali di Lagrange e quindi
solo dalla distribuzione dei nodi;
– è maggiore o uguale di uno;
– nel caso di nodi equispaziati:
xi = xo + ih
2 n +1

 ⇒ Λn ≈
en log(n)
i = 0, K , n 
– nel caso dei nodi Chebyshev in [a,b]:
xi =
b−a
 π 2i + 1  b + a 
cos
+
2
2
2  ⇒ Λ n ≈ log(n)
 2 n +1 
π

i = 0, K , n

Interpolazione polinomiale: riepilogo
Il polinomio interpolatore è unico ma può assumere espressioni
diverse, basta cambiare la base del polinomio interpolatore:
– base dei monomi → polinomio algebrico:
{1, x, x , K, x
2
n −1
, xn
}
⇔
n
pn ( x) = ∑ ak xk
k =0
– polinomi di base di Lagrange → formula di Lagrange:
{ l0 ( x), l1 ( x), K, ln−1 ( x), ln ( x) }
n
⇔ Ln ( x) = ∑ f k lk ( x)
k =0
polinomi di base di Lagrange:
1 i=k
lk ( xi ) = δ ik = 
0 i ≠ k
n
⇔ lk ( x ) = ∏
j =0
j ≠k
x − xj
xk − x j
Interpolazione polinomiale: errori (riepilogo)
– Errore di troncamento:
( n +1)
(
ξ ( x) )
f
*
En ( x ) = f ( x ) − pn ( x ) = π n ( x )
(n + 1)!
– Errore di propagazione:
n
E ( x) = p ( x) − pn ( x) ≤ ε ∑ li ( x) = εΛ( x)
*
n
εi ≤ε
*
n
εi = fi − f (xi )
i =0
i =0,K,n
Interpolazione polinomiale: esempio
Esempio 6.3.1: Data la tabella di valori per f(x)=1/x:
x
f(x)
2.70
0.3704
2.72
0.3676
2.74
0.3650
dare un valore approssimato di 1/2.718 mediante il
polinomio interpolatore di secondo grado, dare una stima
dell’errore, e dopo aver valutato quali cifre si possono
considerare esatte, calcolare il logaritmo naturale del
numero così ottenuto, confrontandolo con log(1/e). Si
eseguano i calcoli arrotondando sulla sesta cifra decimale.
Interpolazione polinomiale: esercizio
Esercizio [GL] 3.3: scrivere l’espressione del polinomio
interpolatore di Lagrange relativo alla seguente tavola di
valori della funzione:
f ( x) =
2
π
∫
x
0
−t 2
e dt
x
0.0
0.4
0.8
1.2
f(x) 0.00000 0.43839 0.74210 0.91031
E stimare l’errore di troncamento nei punti di ascissa
ti=0.2(2i+1), i=0,1,2, tenendo conto che risulta:
0 < f ′( x) < 1.13 x ∈ [0,1.2]
• Esercizi consigliati [GL] 3.4, 3.5, 7.2
Interpolazione polinomiale: convergenza
• Cosa accade se si aumentano il numero dei nodi e quindi il
grado del polinomio interpolatore?
• L’errore di propagazione, cioè quello associato agli errori
sui dati e di approssimazione, cresce.
• Cosa accade all’errore di troncamento?
• Ovvero, al crescere del numero dei nodi il polinomio
interpolatore “tende” alla funzione?
• In una unica parola il polinomio interpolatore è una approssimazione convergente della funzione analitica, ovvero in
una formula:
lim pn ( x) = f ( x) ⇔ lim En ( x) = 0
n →∞
n →∞
Convergenza: funzione di Runge
In generale la convergenza non è garantita, ad esempio:
f ( x) =
1
1+ x2
x ∈ [a, b] = [−5,5]
i(b − a)


=
+
,
(
)
x
a
f
x
 i
i 
n


2.5
f(x)
p5 (x)
p9 (x)
p15 (x)
2.0
1.5
1.0
0.5
0.0
-0.5
-5
-4
-3
-2
-1
0
x
1
2
3
4
5
Convergenza: condizioni sufficienti
Teorema: se f(x)∈ C∞[a,b], e, posto |f(k)(x)|≤Mk, k=0,1,…,
x∈[a,b] (ad es. funzione con derivate equilimitate), risulta:
(b − a) k
Mk = 0
lim
k →∞
k!
pn ( x) = f ( x) uniformemente e per qualunque
allora: lim
n →∞
scelta della distribuzione dei nodi in [a,b].
Teorema: se f(x) è lipschitziana in [a,b], la successione dei
polinomi interpolatori sui nodi di Chebyshev, converge a
f(x), uniformemente in [a,b].
Nodi di Chebyshev: definizione e proprietà
I nodi di Chebyshev in [a,b] sono definiti come:
xˆi =
b−a
 π 2i + 1  b + a
cos
+
2
2
 2 n +1 
Inoltre il polinomio nodale costruito sulla base dei nodi di
Chebyshev verifica le seguenti proprietà:
n +1
(
b − a)
max πˆ n ( x) =
n +1
x∈[ a ,b ]
2
max πˆ n ( x) ≤ max π n ( x)
x∈[ a ,b ]
x∈[ a ,b ]
dove πn(x) è un qualunque altro polinomio nodale costruito su
una base di nodi diversa da quelli di Chebyshev.
Nodi di Chebyshev: esempio
1
f ( x) =
1+ x2
x ∈ [a, b] = [−5,5]
i(b − a)


=
+
,
(
)
x
a
f
x
 i
i 
n


2.5
p15C (x)
p15 (x)
f(x)
2.0
1.5
1.0
0.5
0.0
-0.5
-5
-4
-3
-2
-1
0
x
1
2
3
4
5