interpolazione e approssimazione di funzioni -...
TRANSCRIPT
Carla Guerrini 1
Interpolazione e Approssimazione di Funzioni
Uno dei primi problemi della matematica e anche uno dei piu applicati e lacostruzione di una approssimazione di una funzione data f mediante funzionipiu semplici, tipicamente, ma non sempre, polinomi. Una variante di questoproblema e la costruzione di una funzione regolare a partire da un insieme dis-creto di punti. Quando si deve trattare una funzione complicata a tal puntoche non sia possibile trattare i suoi valori in modo diretto si cerca di approssi-marla con una funzione nota e piu semplice da calcolare. Un modo per risolvereil problema e di definire una classe di funzioni approssimanti e di cercare lasoluzione migliore in funzione di una opportuna metrica. Una scelta possibilee la classe dei polinomi di grado assegnato m, Pm.Definizione di Polinomio
• Una funzione p definita ∀x ∈ R da:
p(x) = a0 + a1x + a2x2 + . . . anxn =
n∑
i=0
aixi
dove n e un intero non negativo e a0, a1, . . . an sono numeri reali fissati,e detto Polinomio;
• se p(x) ha questa rappresentazione e an 6= 0 allora p(x) ha grado n(ordine n+1).
• se tutti i coefficienti a0, a1 . . . an sono nulli, allora p(x) e detto il polinomionullo.
Con Pn si denota l’insieme di tutti i polinomi p con grado non superiore ad n,insieme al polinomio nullo.
La principale ragione della popolarita delle funzioni polinomiali nel calcolonumerico deriva dal fatto che e facile calcolarle, cioe e facile valutarle in unpunto, sommarle,moltiplicarle derivarle e integrarle. La definizione mostrain particolare, che per valutare un polinomio in un punto e necessario solomoltiplicare e sommare numeri reali un numero finito di volte.
Essi giocano un ruolo centrale nella teoria dell’approssimazione e nel calcolonumerico per le loro ben note proprieta
• i polinomi di grado ≤ n formano uno spazio vettoriale di dimensionefinita n + 1
• sono funzioni regolari
• sono facilmente memorizzabili, calcolabili e manipolabili su un calcola-tore
• la derivata e l’antiderivata di un polinomio sono ancora polinomi i cuicoefficienti sono determinati algebricamente ( e anche da un calcolatore)
• il numero di zeri di un polinomio di grado n non puo superare n,
2010/10/26 Info-Management 2
• inoltre valgono i seguenti teoremi:
Teorema (Weierstrass) Se f(x) e una generica funzione continua sull’fintervallolimitato e chiuso [a, b], per ogni ε > 0 esiste un polinomio Pn(x) di grado n(ε),cio‘e di grado dipendente da ε, tale che
maxx∈[a,b]
|f(x)− Pn(x)| < ε
Osserviamo, comunque, che il teorema di Weierstrass assicura l’esistenza delpolinomio approssimante, ma non implica che tale polinomio sia un particolarepolinomio di interpolazione. In sostanza, mentre e confortante sapere che epossibile approssimare una funzione continua f(x) con una fissata accuratezzamediante un polinomio, non e garantito che tale polinomio possa essere ot-tenuto con un algoritmo conveniente.
TeoremaPn e uno spazio vettoriale di dimensione n + 1.
Teorema ( fondamentale dell’algebra)Sia p(x) un polinomio di grado n ≥ 1. L’equazione algebrica di grado n,p(x) = 0 ha almeno una radice reale o complessa.
CorollarioOgni equazione algebrica di grado n ha esattamente n radici reali o complesse,ciascuna contata con la sua molteplicita, cioe
p(x) = an(x− α1)m1 · (x− α2)
m2 · (x− α3)m3 . . . (x− αk)
mk
dove αi, i = 1, . . . k sono le radici a due a due distinte e mi, i = 1, . . . ksono le relative molteplicita , tali che m1 + m2 + . . . mk = n
TeoremaSiano p(x), b(x) polinomi con b(x) 6= 0; allora esistono e sono unici i polinomiq(x) ed r(x) per cui
p(x) = q(x) · b(x) + r(x)
con r(x) = 0 o r(x) con grado minore di b(x)Osservazione Dati i polinomi p(x) e b(x) con b(x) 6= 0 e sempre possibiletrovare un polinomio quoziente q(x) ed un polinomio resto r(x) per cui
p(x)
b(x)= q(x) +
r(x)
b(x)
Valutazione numerica di un polinomioAssegnato un polinomio di grado n (nella sua forma convenzionale) p(x) =∑n
i=0 aixi Un algoritmo immediato per la sua valutazione in x0 e illustrato
come segue: indicato con a il vettore contente i coefficienti del polinomioa = [a(n + 1), a(n), . . . , a(2), a(1)] allora
2010/10/26 Info-Management 3
....
s = 1;
p = a(1);
for k=2:n+1
s = s* x_0;
p = p+a(k)*s;
end
quindi il calcolo di p(x) richiede 2n noltiplicazioni e n addizioni. Se scriviamoil polinomio nella forma seguente
p(x) = a0 + x(a1 + x(a2 + x(a3 + . . . + x(an−1 + xan) . . .)))
si ricava il seguente metodo dovuto a Horner:
.....
p=a(n+1)
for k=n:-1:1
p=a(k)+x_0*p;
end
r=p;
L’algoritmo di Horner richiede n moltiplicazioni e n addizioni, quindi piurapido del precedente oltre che numericamente piu stabile.Lo schema di Horner e la regola di RuffiniUn caso particolarmente importante che si deduce dal teorema precedente sulladivisione di due polinomi q(x) e b(x) e quello in cui b(x) = (x − x0) per uncerto x0 reale. Allora il risultato dice che esistono unici i polinomi q(x) e r(x)per cui
p(x) = q(x) · (x− x0) + r(x)
dove r(x) = 0 o r(x) ha grado zero; in ogni caso r(x) e un polinomio costantediciamo r, cosı:
p(x) = q(x) · (x− x0) + r;
Se ora valutiamo p(x) in x0 si trova che p(x0) = r. Quindi vale il seguente:TeoremaIl resto della divisione del polinomio p(x) per (x− x0) e r = p(x0).Dal teorema del resto enunciato si deduce che per valutare un polinomio in unpunto x0 si puo determinare il resto della divisione fra p(x) e (x − x0). A talfine e nota la regola di Ruffini:
an+1 an . . . . . . a2 a1 a0
x0 x0bn x0bn−1 . . . x0b3 x0b2 x0b1
bn bn−1 . . . . . . b2 b1 r
da cui noti i coefficienti a0, a1, . . . an ed x0 i coefficienti bi ed il resto r = p(x0)si possono ricavare cosı
2010/10/26 Info-Management 4
bn ← an+1
bn−1 ← an + x0bn
bn−2 ← an−1 + x0bn−1...
......
b1 ← a1 + x0b2
r ← a0 + x0b1
con q(x) =∑n−1
i=0 bi+1x = b1+b2x+. . . bnxn−1; ma questo schema e esattamentequello di Horner appena visto. Se si vogliono calcolare anche i coefficienti delpolinomio q(x) l’algoritmo precedente viene cosı modificato
....
p =a(n+1);
b(n)=p;
for k=n:-1:2
p=a(k)+p*x_0;
b(k-1)=p;
end
r=a(1)+x_0*b(1);
EsempioSia dato p(x) = 1 + x − 2x2 + 3x4 e si voglia calcolare p(2). Quando lavalutazione si effettua manualmente la regola di Ruffini e molto comoda:
3 0 −2 1 1
2
3
6 20 42
6 10 21 43 = P(2)
12
Valutazione di un polinomio e della sua derivataSi voglia ora determinare il valore della derivata prima di p(x) per x = x0 cioep′(x0).Da quanto detto vale:
p(x) = q(x)(x− x0) + p(x0)
derivandop′(x) = q′(x)(x− x0) + q(x)
e per x = x0
p′(x0) = q(x0)
dove q(x) =∑n−1
i=0 bi+1xi e i coefficienti bi per i = 1, 2, . . . , n sono quelli che si
ottengono applicando l’algoritmo di Ruffini Horner per valutare p(x0).
EsempioSi valuti p′(2) per p(x) = 1 + x− 2x2 + 3x4 differenziando esplicitamente p(x)si ha:
p′(x) = 1− 4x + 12x3, p′(2) = 1− 8 + 96 = 89
2010/10/26 Info-Management 5
3 0 −2 1 1
2
3
6 20 42
6 10 21 43 = P(2)
12
62
3 12
24
34
68
89 = P’(2)
Il calcolo di p(x0)e p′(x0) possono essere organizzati in modo da non memoriz-zare nessun risultato intermedio:
....
p_d=0;
p=a(n+1)
for k=n:-1:1
p_d=p+x_0 *p_d
p=a(k)+x_0*p
end
.......
Analogamente si possono calcolare anche le derivate di ordine maggiore. Derivandodue volte p(x) = q(x)(x− x0) + r si ottiene
p′(x) = q′(x)(x− x0) + q(x), p”(x) = q”(x)(x− x0) + 2q′(x),
da cui p”(x0) = 2q′(x0). Quindi per calcolare p”(x0) e necessario calcolareq′(x0) utilizzando lo schema di Horner.
Esempio Si valuti p”(2) per p(x) = 1+x−2x2 +3x4 In generale possiamo
3 0 −2 1 1
2
3
6 20 42
6 10 21 43 = P(2)
12
62
3 12
24
34
68
89 = P’(2)
23
618
3670 = P"(2)/2
scrivere la relazione fra un polinomio dividendo e il suo polinomio quozienteutilizzando un indicepj(x) = pj+1(x)(x− x0) + p(j)(x0), j = 0, . . . , n− 1, allora
• p(x) = p0(x)
• pj(x0) = j!pj(x0)
2010/10/26 Info-Management 6
• i coefficienti di pj(x) sono i valori determinati applicando il metodo diHorner al polinomio pj−1(x).
Valutazione di una polinomio: Errore InerenteCome e noto un problema si dice ben condizionato se a piccole perturbazioni deidati corrispodono piccole perturbazioni dei risultati, pur risolvendo analitica-mente il problema. Vogliamo stimare la sensibilita degli errori di un problemaindipendentemente dall’algoritmo che si usera per risolverlo.Esempio p(x) = a0 + a1x = 100− xvogliamo valutarlo per x0 ∈ [100, 101]. Si perturba il coefficiente a1 del l’1%,per cui il polinomio perturbato risulta:
p(x) = 100− (1− 1
100)x = 100− 99
100x
valutiamolo per x = 101:
p(101) = −1; p(101) = 0.01
commettendo un errore relativo dato da:
| p(101)− p(101)
p(101)| = 101
1
100
il coefficiente a1 rappresenta l’inclinazione della retta, la quale anche se alter-
ata minimamente comporta grossi errori per punti lontani dall’origine.In generale il problema di valutare un polinomio nella base dei monomi inpunti ∈ [a, b] con a, b grandi non risulta un problema ben condizionato ossia sipossono avere grossi errori inerenti.Facciamo l’analisi dell’errore inerente:
Ein ≈n∑
i=1
ciεi
dove ci = xi
f(x)∂f(x)∂xi
con εi = xi−xi
xie |εi < |u| per i = 1, 2, . . . , n nel caso specifico
Ein ≈ a0
a0 + a1xε1 +
xa1
a0 + a1xε2 +
a1x
a0 + a1xε3
2010/10/26 Info-Management 7
Nel nostro caso a0 = 100, a1 = −1 e x ∈ [100, 101], per esempio x = 101, si ha
=100
−1ε1 +
−101
−1ε2 +
−101
−1ε3
da cui si vede che una piccola perturbazione su uno dei coefficienti, per esempioa1 dell’1% (ε1 = 0ε2 = 1/100ε3 = 0) porta Ein ad assumere il valore −101/100cioe 101 volte maggiore di quello iniziale. Si osservi anche che questo accadeper qualunque x ∈ [100, 101] nel caso in cui ε1 = ε2 = 0 e ε3 6= 0Le basi di rappresentazione polinomiale sono infinite e numerose sono quelledi interesse numerico, nel senso che a seconda del problema, si puo individuarela base piu idonea per trattarlo; fra queste ricordiamo la base delle potenzetraslate con un centro, la forma di Newton o base delle potenze traslate con ncentri; la base dei polinomi cardinali o di Lagrange ed altre ancora. Una fraesse che presenta svariate proprieta numeriche e la seguente.Polinomi nella base di BernsteinCon polinomio nella base di Bernstein si intende una espressione del tipo
p(x) =n∑
i=0
biBi,n(x) x ∈ [a, b]
dove Bi,n(x) i = 0, 1, . . . , n sono i polinomi base di Bernstein di grado nsull’intervallo [a, b] e definiti come:
Bi,n(x) =
(ni
)(b− x)n−i(x− a)i
(b− a)ni = 0, 1, . . . , n
e b0, b1, . . . , bn ∈ R sono i coefficienti nella base di Bernstein. Esempio
0 0.2 0.4 0.6 0.8 1 1.2
0
0.2
0.4
0.6
0.8
1
Figure 1: Polinomi di Bernstein di grado 3
Riprendiamo l’esempio del polinomio precedente, ma nella base di Bernstein,sara :
B0,1(x) = 101− x B1,1(x) = x− 100
2010/10/26 Info-Management 8
da cuip(x) = 100− x = b0B0,1(x) + b1B1,1(x)
= 0(101− x)− 1(x− 100) ossia b0 = 0 b1 = −1
Rieseguendo l’analisi sull’errore inerente si ha:Ein = c1ε1 + c2ε2 + c3ε3 =
b0
p(x)(101− x)ε1 +
b1
p(x)(x− 100)ε2 +
xp′(x)
p(x)ε3
perturbando solo b1 (cioe ε1 = ε3 = 0, ma ε2 6= 0), valutando in un qualunquepunto di [100, 101] il coefficiente moltiplicatore di ε2, sara al massimo dell’ordinedell’unita. Procediamo numericamente: si perturba il coefficiente b1 dell’1%per cui il polinomio perturbato risulta:
p(x) = −(1− 1
100)(x− 100) = − 99
100(x− 100)
e valutandoli in x = 101 si ha
p(101) = −1 ; p(101) = −0.99
commettendo un errore relativo dato da:
| p(101)− p(101)
p(101)| = 1
100
cioe la variazione iniziale dell’1% porta a una variazione sul risultato dellastessa entita. Perturbiamo x dell’1% , se x=101 sara x = 99
100101 = 99.99
allorap(101) = −1 p(99.99) = 0.01
commetendo un errore relativo
|p(101)− p(99.99)
p(101)| = 101
100
cosa si puo fare? Poiche i polinomi sono invarianti per traslazione e scalanell’intervallo di definizione, nelle applicazioni si utilizzano i traslati in [0, 1];e a qu esto caso ci si puo sempre ricondurre mediante un cambio di variabile:
x ∈ [a, b] → t ∈ [0, 1], t =x− a
b− ax = a + t(b− a)
Infatti si ha:Bi,n(x) = Bi,n(a + t(b− a)) =
(ni
)(b− a− t(b− a))n−i(a + t(b− a)− a)i
(b− a)n=
(ni
)[(b− a)(1− t))]n−i[t(b− a)]i
(b− a)n=
(ni
)(1− t)n−iti = Bi,n(t)
2010/10/26 Info-Management 9
Riassumendo avremo quindi
p(t) =n∑
i=0
biBi,n(t) t ∈ [0, 1]
Ritornando al nostro esempio si ha:
p(x) = b0(101− x) + b1(x− 100) x ∈ [100, 101]
p(t) = b0(1− t) + b1(t− 0) t ∈ [0, 1]
e la stima dell’errore inerente
Ein =b0
p(t)(1− t)ε1 +
b1
p(t)(t− 0)ε2 +
tp′(t)p(t)
ε3
dove i primi due termini restano uguali in valore, mentre il terzo pur restandop(t) lo stesso potenzialmente puo avere tp′(t) inferiore, questo e sicuramentevero per t ∈ [0, 1], inoltre si ha p′(t) = (b − a)p′(x) verra sicuramente ridottose (b− a) < 1. Nel nostro esempio abbiamo
p(t) = −t t ∈ [0, 1]
b − a = 1 p′(t) = p′(x). Perturbiamo t dell’1% allora t = 99100
; se t = 1 sarat = 0.99 allora p(1) = −1 p(0.99) = −0.99 con un errore relativo
|p(1)− p(0.99)
p(1)| = 1
100
Riassumendo , se si vuole valutare p(x0) si determina t0 = x0−ab−a
,si calcola p(x0)con p(t0) polinomio di Bernstein in [0, 1] e sara p(x0) = p(t0).
2010/10/26 Info-Management 10
Esistono varie funzioni Matlab che manipolano i polinomi:POLYVAL, POLYFIT, ROOT, CONVSi voglia valutare p(x) = 3x7+2x2+1 nei punti equidistanti xk = −1+k×0.25per k = 0, 1, . . . , 8, si puo utilizzare il seguente codice:À p = [3, 0, 0, 0, 0, 2, 0, 1]; x = [−1 : 0.25 : 1]À polyval(p, x)ans = .......
Con il comando p = conv(p1, p2) si calcolano i coefficienti del polinomioottenuto come prodotto dei polinomi i cui coefficienti sono precisati in p1 e p2.Invece il comando [q, r] = deconv(p1, p2) calcola i coefficienti del quoziente edel resto della divisione fra p1 e p2, cioe q ed r tali chep1 = conv(p2, q) + r
EsempioConsideriamo i polinomi p1(x) = x4−1 e p2(x) = x3−1, calcoliamo il prodottoe la divisioneÀ p1 = [1, 0, 0, 0,−1];À p2 = [1, 0, 0,−1];À p = conv(p1, p2)p =1, 0, 0,−1,−1, 0, 0, 1À [q, r] = deconv(p1, p2)q =1 0r =0 0 0 1 − 1Troviamo pertanto i polinomi p(x) = p1(x)p2(x) = x7 − x4 − x3 + 1, q(x) = xe r(x) = x− 1 tali che p1(x) = q(x) ∗ p2(x) + r(x).
2010/10/26 Info-Management 11
Interpolazione
Di una funzione f(x) siano noti i valori fi = f(xi) per i = 0, 1, . . . , n, incorrispondenza di n + 1 punti distinti xi. Si vuole determinare una funzione φtale che
φ(xi) = fi i = 0, 1, . . . , n
Una tale funzione φ si dice che interpola la f nei punti xi i = 0, 1, . . . , n.Nel caso generale viene individuato uno spazio di dimensione finita P di fun-zioni reali e una base di rappresentazione ϕj(x), j = 0, 1, . . . , n per cui ognielemento φ ∈ P risulta definito da una combinazione lineare a coefficienti cj
reali:
φ(x) =n∑
j=0
cjϕj(x).
Il problema di interpolare i dati assegnati con una funzione φ ∈ P consiste neldeterminare la funzione φ∗ o meglio i coefficienti c∗0, c
∗1, . . . c
∗n tali che
φ∗(xi) = fi i = 0, 1, . . . , n
La scelta dello spazio solitamente e dettata dal fatto che esista sempre unasoluzione unica al problema, successivamente dalla regolarita desiderata perl’interpolante e dalla natura dei dati.
Abbiamo visto che risulta molto importante scegliere la classe delle fun-zioni ϕj(x) soprattutto per quanto riguarda il condizionamento. La sceltadeve essere motivata in modo da tener conto delle specifiche proprieta dellaf(x). Inoltre devono essere facilmente calcolabili e dotate di buone proprietadi regolarita. Sono molto utilizzate:
• la classe delle funzioni razionali
• la classe delle funzioni trigonometriche.
• la classe delle funzioni esponenziali
Occorre tener presente che non sempre e consigliabile determinare una funzioneapprossimante la f richiedendo che assuma gli stessi valori in certi punti. Seinfatti della f sono noti solo approssimazioni dei valori della f , per esempio idati provengono da misurazioni, e meglio usare un metodo di approssimazioneche possa attenuare gli errori dovuti alle misurazioni.In queste lezioni tratteremo solamente il caso dell’interpolazione polinomialeche garantisce sempre l’esistenza e l’unicita della soluzione, una buona rego-larita ed una buona ricostruzione, ma non sempre!.
TeoremaDati (n + 1) punti di interpolazione (xi, fi), i = 0, 1, . . . , n con xj 6= xk k 6= jesiste ed e unico il polinomio p ∈ Pn che verifica le condizioni
p(xi) = f(xi)
DimostrazioneSi consideri il vettore a = (a0, a1, . . . , an)T dei coefficienti del polinomio p(x) =
2010/10/26 Info-Management 12
a0+a1x+a2x2+. . . anxn, il vettore f = (f0, f1, . . . , fn)T e la matrice V = {νi,j}
detta matrice di Vandermonde, cosı definita:
νi,j = xj−1i−1 i = 1, 2, . . . , n + 1 j = 1, 2, . . . , n + 1
Imponendo che p(x) verifichi le n + 1 condizioni di interpolazione, si ottiene ilsistema lineare di n + 1 equazioni in n + 1 incognite
V a = f.
La matrice di vandermonde risulta non singolare in quanto
detV = Πni,j=0;j>i(xj − xi)
e i punti xi sono per ipotesi distinti, ne segue che il sistema lineare ha una eduna sola soluzione e quindi il polinomio p(x) esiste ed e unico.Esaminiamo una costruzione diretta, ma in generale meno conveniente, checonsiste nella risoluzione del sistema lineare aventi come incognite i coefficientidel polinomio interpolatore:
function a = Interp_Vander(x,y)
% a = Inverp_Vander(x,y)
% Calcola la matrice dei coefficienti (matrice di Vandermonde)
% x e y sono due vettori colonna di ordine n e x ha componenti distinte
% a e’ un vettore colonna di ordine n tale che se
%
% p(x) = a(1) + a(2)x + ... a(n)x^(n-1)
% allora
% p(x(i)) = y(i), i=1:n
n = length(x); V = ones(n,n); for j=2:n
% costruisce la colonna j.
V(:,j) = x.*V(:,j-1);
end
a = V\y;
________________________________________________________________
function pVal = Horner(a,z)
% pVal = Horner(a,z)
% calcola il polinomio interpolante in z (vettore di ordine m)
% pVal e’ un vettore dello stesso ordine di z con la proprieta’ che se
%
% p(x) = a(1) + .. +a(n)x^(n-1)
% allora
% pVal(i) = p(z(i)) , i=1:m.
n = length(a);
m = length(z);
pVal = a(n)*ones(size(z));
for k=n-1:-1:1
2010/10/26 Info-Management 13
pVal = z.*pVal + a(k);
end
________________________________________________________________________________
% Script File: Show_pol_interp
% grafico del polinomio di interpolazione di terzo grado in 4 punti random
% della funzione sin(x) su [0,2pi].
% Usa il metodo di Vandermonde.
close all
x0 = linspace(0,2*pi,100);
y0 = sin(x0);
for eg=1:4
x=2*pi*sort(rand(4,1)); y = sin(x);
a = Interp_Vander(x,y);
pVal=Horner(a,x0);
subplot(2,2,eg)plot(x0,y0,x0,pVal,--,x,y,*)
axis([0 2*pi -2 2])
end
_________________________________________________________________________________
0 2 4 6−2
−1
0
1
2
0 2 4 6−2
−1
0
1
2
0 2 4 6−2
−1
0
1
2
0 2 4 6−2
−1
0
1
2
OsservazioneSolo raramenmte del polinomio di interpolazione sono richiesti i coefficienti,in generale si vuole il valore di p(x) in uno o piu punti, e per calcolarlo non econveniente risolvere il sistema lineare, perche cio richiederebbe un numero dioperazioni dell’ordine di n3/3 operazioni moltiplicative, inoltre la matrice diVandermonde puo essere mal condizionata e quindi il calcolo di p(x) sarebbenumericamente instabile.Il polinomio di interpolazione pur essendo unico puo essere rappresentato indiverse forme piu convenienti sia dal punto di vista del costo computazionaleche della stabilita.
2010/10/26 Info-Management 14
Interpolante in Base di BernsteinConsideriamo n + 1 dati (xi, yi) con ascisse distinte in [a, b]
x0 < x1 < . . . < xn−1 < xn
Sappiamo che esiste ed e unico il polinomio p(x) di grado ≤ n che verifica lacondizione di interpolazione
p(xj) = yj ∀j = 0, 1, . . . , n
Lo vogliamo determinare esprimendolo nella base di Bernstein ossia nellaforma:
p(x) = b0B0,n(x) + b1B1,n(x) + . . . + bnBn,n(x), x ∈ [a, b]
Si utilizzi un cambiamento di variabile x → t in modo da usare la base diBernstein in [0, 1].
p(t) = b0B0,n(t) + b1B1,n(t) + . . . + bnBn,n(t), t ∈ [0, 1]
con tj = xj−a
b−a, p(xj) = p(tj) = yj, j = 0, 1, . . . , n. Imponendo le n + 1
condizioni di interpolazione, si arriva a costruire un sistema lineare di ordinen + 1 in forma matriciale
Bb = y
con
B =
B0,n(t0) B1,n(t0) . . . Bn,n(t0)B0,n(t1) B1,n(t1) . . . Bn,n(t1)...
......
...B0,n(tn) B1,n(tn) . . . Bn,n(tn)
d =
b0
b1...bn
, y =
y0
y1...yn
tale sistema ammette soluzione unica b∗1, b∗2, . . . , b
∗n)T che fornisce i coefficienti
del solo polinomio p(x) di grado ≤ n interpolante n + 1 dati distinti. Nellaseguente tabella sono riportati gli indici di condizionamento delle matrici cal-colate su punti equidistanti nell’intervallo di definizione mediante polinomi diBernstein e base delle potenze.
grado n Bernst. Potenze
3 2.27 1.41e024 4.52 9.04e025 9.65 3.78e036 21.6 2.5e047 49.98 1.3e058 118.38 8.10e059 285.34 5.08e0610 697.14 3.04e07
2010/10/26 Info-Management 15
Base di Lagrange
Dati (n + 1) punti di interpolazione (xi, yi), i = 0, 1, . . . , n con a = x0 <x1 < . . . < xn = b, il polinomio di interpolazione si scrive nella forma diLagrange come segue:
p(x) =n∑
i=0
yiLi,n(x), x ∈ [a, b]
Le funzioni di Lagrange sono definite per i = 0, 1, . . . , n:
Li,n(x) =x− x0
xi − x0
. . .x− xi−1
xi − xi−1
x− xi+1
xi − xi+1
. . .x− xn
xi − xn
= Πnj 6=i,j=0
x− xj
xi − xj
Le funzioni di Lagrange Li,n(x) formano una base per lo spazio Pn deipolinomi di grado n
{L0,n(x), L1,n(x), . . . Ln,n(x)}
Per come sono definite valgono le seguenti proprieta
Li,n(xj) = δij =
{1 se j = i0 se j 6= i
Li,n(x) e un polinomio di grado al piu n, con n zeri distinti: x0, x1, . . . xi−1, xi+1, . . . xn.Quindi determinare il polinomio p(x) che soddisfi le condizioni di interpolazionep(xi) = yi, ∀i, nella forma di Lagrange
p(x) = a0L0,n(x) + a1L1,n(x) + . . . + anLn,n(x)
imponendo le condizioni di interpolazione si ottiene il sistema lineare
L0,n(x0) L1,n(x0) . . . Ln,n(x0)L0,n(x1) L1,n(x1) . . . Ln,n(x1)...
......
...L0,n(xn) L1,n(xn) . . . Ln,n(xn)
·
a0
a1...an
=
y0
y1...yn
Si osservi che la matrice L risulta uguale alla matrice identita di ordine n + 1,In+1. Quindi nell’interpolazione secondo Lagrange non cerchiamo i coefficientiai perche sono identicamente uguali ai valori noti yi. In questo caso cerchiamoproprio le funzioni base di Lagrange costruite sulle ascisse xi. L’idea e dirisolvere gli n + 1 problemi di interpolazione dove le ascisse x0, x1, . . . , xn sonoquelle del problema iniziale in corrispondenza delle quali si hanno n+1 insiemi
2010/10/26 Info-Management 16
di valori yi cosı fatti:{1, 0, 0, . . . , 0} ⇒ unica soluzione L0,n(xj){0, 1, 0, . . . , 0} ⇒ unica soluzione L1,n(xj){0, 0, 1, . . . , 0} ⇒ unica soluzione L2,n(xj)...{0, 0, 0, . . . , 1} ⇒ unica soluzione Ln,n(xj)La soluzione unica al problema iniziale si ottiene combinando assieme le n + 1soluzioni parziali:
p(x) =n∑
i=0
yiLi,n(x)
e il polinomio unico di interpolazione e
Li,n(xj) = δi,j ⇒ p(xi) =n∑
i=0
yiLi,n(xi) = yi ∀i.
Esempio
−2 −1 0 1 2 3 4 5−1
−0.5
0
0.5
1
1.5
2polinomi di Lagrange
nodi in 0,1,2,3,4
Dati i punti x0 = 0, x1 = 1, x2 = 3, le funzioni base di Lagrange ( anche dettefunzioni cardinali) costruite su queste ascisse sono
L0,2 =x− 1
0− 1· x− 3
0− 3=
(x− 1)(x− 3)
3=
x2 − 4x + 3
3
L1,2 =x− 0
1− 0· x− 3
1− 3=−x(x− 3)
2
L2,2 =x− 0
3− 0· x− 1
3− 1=
x(x− 1)
6
Il polinomio che interpola i tre punti (0, y0), (1, y1), (3, y2) e allora
p(x) = y0(x− 1)(x− 3)
3+ y1
−x(x− 3)
2+ y2
x(x− 1)
6
Le funzioni base di Lagrange costruite su n + 1 ascisse distinte hanno grado≤ n nell’esempio precedente le tre funzioni base di Lagrange hanno tutte grado2. Se i punti (xi, yi) fossero tutti su una retta, la combinazione lineare si
2010/10/26 Info-Management 17
0 0.5 1 1.5 2 2.5 3−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
1.2
ridurrebbe in modo che il polinomio p risultante abbia grado 1.EsempioDati i punti (0, 0), (1, 1), (3, 3), le funzioni base di Lagrange sono:
L0,2 =(x− 1)(x− 3
3,
L1,2 =−x(x− 3)
2, e
L2,2 =x(x− 1)
6
p(x) = 0(x− 1)(x− 3)
3− x(x− 3)
2+ 3
x(x− 1)
6= x.
Se si deve valutare il polinomio interpolatore espresso nella forma di Lagrangep(x) =
∑i yiLi,n(x) in un punto x 6= xi,∀i, lo si potrebbe trasformare nella
forma monomiale p(x) =∑
i aixi e poi applicare l’algoritmo di Ruffini-Horner.
Procedere in questo modo, vuole dire dover calcolare gli ai che richiedono oltre6n2 operazioni (×, +)Un altro algoritmo potrebbe essere:Dati x, n, {x0, x1, . . . , xn}, {y0, y1, . . . , yn}p ← 0for j=0,1,. . .,n....... q ← 1....... for i=0,1,. . .,n...............if j 6= i............... q ← q × (x−xi)
(xj−xi)
....... end
....... p ← p + yj × qendma anche questo ha un costo di circa 4n2 operazioni (×, +).
Per cui occorre cambiare strategia.Consideriamo
ω(x) = (x− x0)(x− x1) . . . (x− xn−1)(x− xn) = Πnk=0(x− xk)
2010/10/26 Info-Management 18
Quindi possiamo scrivere
p(x) =n∑
i=0
yiLi,n(x) = ω(x)n∑
i=0
zi
x− xi
conzi =
yi
Πnj 6=i,j=0(xi − xj)
Infattin∑
i=0
yiLi,n(x) =n∑
i=0
yiΠnj 6=i,j=0
x− xj
xi − xj
=
=n∑
i=0
yi
Πnj 6=i,j=0(x− xj)
Πnj 6=i,j=0(xi − xj)
=n∑
i=0
yiω(x)/(x− xi)
Πnj 6=i,j=0(xi − xj)
=
=n∑
i=0
yi
Πnj 6=i,j=0(xi − xj)
ω(x)
x− xi
=n∑
i=0
ziω(x)
x− xi
= ω(x)n∑
i=0
zi
x− xi
ove abbiamo posto
zi =yi
Πnj 6=i,j=0(xi − xj)
Quindi per calcolare
p(x) =n∑
i=0
yiLi,n(x) = ω(x)n∑
i=0
zi
x− xi
Le operazioni richieste sono, a meno di termini di ordine inferiore,
• n sottrazioni per calcolare (x− xi), per i = 0, 1, . . . , n
• n2/2 sottrazioni per xi − xj, per i = 0, 1, . . . , n, e j = 0, 1, . . . , n,
• n2 prodotti per calcolare zi, per i = 0, 1, . . . , n;
• n somme e 2n prodotti per calcolare p(x).
In totale questo calcolo richiede n2/2 addizioni ed n2 prodotti. Per calcolareil valore dello stesso polinomio p in un altro punto x conviene sempre usarequesta forma perche gli scalari zi dipendono solo da xi e possono essere cal-colati una volta per tutte. Quindi il calcolo in un altro punto x richiede soloil passo finale cioe n somme e 2n prodotti. Infine lasciando inalterati gli xi
e variando solo le ordinate yi si puo ancora calcolare p(x) con n somme e 2nprodotti aggiuntivi.
2010/10/26 Info-Management 19
Riepilogo
RiepilogoI costi computazionali dell’interpolazione con la forma di Lagrange sono iseguenti:Calcolo in un punto: n2/2 somme ed n2 prodottiCalcolo in m punti:n2/2 + 2nm somme ed n2 + 2mn prodotti.In MATLABy = lagrval(y, x, x)
function yy=lagrval(x,y,xx)
% yy=lagrval(x,y,xx)
% tutti i vettori in input devono essere vettori colonna
% valutazione di un polinomio nella forma di Lagrange
% y --> vettore dei coefficienti
% x --> vettore dei punti in base ai quali restano determinati
% i polinomi elementari di Lagrange
% xx --> vettore di ascisse in corrispondenza delle quali
% si vuole valutare il polinomio
% yy <-- vettore dei valori del polinomio
n=length(x);
den(1)=prod(x(1)-x(2:n));
for i=2:n-1
den(i)=prod(x(i)-x(1:i-1))*prod(x(i)-x(i+1:n));
end
den(n)=prod(x(n)-x(1:n-1));
m=length(xx);
for i=1:m
omega=prod(xx(i)-x);
if omega==0
[nz k]=max(xx(i)==x);
yy(i)=y(k);
else
yy(i)=omega*sum(y./(den.*(xx(i)-x)));
end
end
P. di Lagrange P.di Newton1 punto n2/2(+) + n2(×) n2(+) + n2/2(×)
in m punti n2/2 + 2mn)(+)+ (n2 + 2mn)(+)++(n2 + 2mn)(×) +n2/2 + 2mn)(×)
2010/10/26 Info-Management 20
Analisi dell’errore di interpolazione
Dati n+1 osservazioni fi di una funzione f(x) in corrispondenza di n+1ascisse distinte abbiamo visto alcuni metodi per costruire il polinomio di gradominimo che interpola i punti (xi, fi). In questo caso ha senso chiedersi cheerrore si commette in un punto x nel considerare il valore di p(x) al posto dif(x), cioe quanto e grande l’errore di interpolazione
R(x) = f(x)− p(x)
che si commette in un punto
x ∈ [a, b], x 6= xi, ∀i.Per dare una risposta e necessario porre alcune ipotesi di regolarita sulla f .
TeoremaSia f(x) ∈ Cn+1
[a,b] ossia f continua con tutte le sue derivate fino a quella diordine n+1. Sia [a, b] un intervallo di R limitato e chiuso contenente le ascissedistinte xi. Sia x ∈ [a, b] un punto qualsiasi, distinto dagli xi. Esiste allora unpunto ξ ( dipendente da x) interno ad [a, b] per cui:
R(x) := f(x)− p(x) =ω(x)
(n + 1)!fn+1(ξ)
conω(x) = (x− x0)(x− x1) . . . (x− xn) = Πn
k=0(x− xk).
CorollarioSi indichi con
Mn+1 = maxx∈[a,b]
|fn+1(x)|
allora un limite superiore ad R(x) = f(x)− p(x) e dato da
|R(x)| = |ω(x)|(n + 1)!
Mn+1.
Esempiof(x) = ex, f ∈ Cn+1
[a,b] , si ha:
Mn+1 = maxx∈[a,b]
|ex| = eb
Inoltre per ogni scelta delle ascisse xi ∈ [a, b] vale|ω(x)| = |(x− x0)(x− x1) . . . (x− xn−1)(x− xn)|≤ (b− a)(b− a) . . . (b− a) = (b− a)n+1 Pertanto
maxx∈[a,b]
|R(x)| ≤ (b− a)n+1
(n + 1)!eb
ma in questo caso
limn→∞ max
x∈[a,b]|R(x)| = lim
n→∞(b− a)n+1
(n + 1)!eb = 0
2010/10/26 Info-Management 21
quindi in altre parolelim
n→∞ |p(x)− f(x)| = 0
Il polinomio p di interpolazione converge uniformemente ad f su [a, b] quandoil numero n di punti xi di interpolazione tende a ∞.
Estrapolazione L’espressione dell’erroe R evidenzia come nel caso di es-trapolazione
x /∈ [a, b] := [mini
xi, maxi
xi]
l’errore R puo aumentare notevolmente, assieme a |ω(x)|.
Errori nell’interpolazione, limitazioni dell’errore, convergenza epunti di Chebyshev Nella trattazione del problema di interpolazione sinoad ora abbiamo trattato le ordinate yi dei punti di interpolazione (xi, yi) comenumeri arbitrari. Assumiamo che soddisfino la relazione f(xi) = yi dove fabbia tutte le derivate necessarie. Quindi si dice che il polinomio p(x) cal-colato interpola la f in x0, x1, . . . , xn. Tale polinomio viene spesso costruitoper trovare una approssimazione della f piu semplice da trattare e naturaleconsiderare la seguente espressione dell’errore:
R(x) = f(x)− p(x)
in seguito assumiamo che la variabile x non assuma valori uguali a x0, x1, . . . , xn
( perche in questi punti l’errore e zero).Aumentando il numero di punti di interpolazione aumenta in corrispon-
denza il grado del polinomio, al crescere quindi di n la successione
{pn(x)}
puo non convergere ad f(x) puo capitare anche nel caso in cui f ∈ C∞[a,b]
Consideriamo la seguente funzione di Runge
f(t) = 1/(1 + t2)
se interpolata con punti equispaziati nell’intervallo [−5, 5] l’interpolante di-verge in corrispondenza degli estremi dell’intervallo. Si puo dimostrare che alcrescere di n la successione dei polinomi di interpolazione {p(n} costruiti sulleascisse equidistanti:
xi = i10
n− 5, i = 0, 1, . . . , n
non converge alla funzione di Runge, perche gli errori diventano arbitraria-mente grandi specialmente nei punti vicino agli estremi dell’intervallo. Quindiimporre la regolarita sulla f non e sufficiente a garantire la convergenza dell’interpolazione.Se si considerano come ascisse di interpolazione gli n + 1 zeri del polinomio diChebyshev di grado n rispettivamente:xi = cos( (2i+1)π
2(n+1)) ∈ [−1, 1] i = 0, 1, . . . , n
2010/10/26 Info-Management 22
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1
−0.2
0
0.2
0.4
0.6
0.8
1
1.2
zeri del polinomio di Chebyshev T8
j=1
j=4 j=5
j=6
j=7
j=8
j=3
j=2
−5 −4 −3 −2 −1 0 1 2 3 4 5−0.5
0
0.5
1interpolazione funzione di Runge punti equidistanti
grado del polinomio 6
oppurexi = a+b
2− b−a
2cos( (2i+1)π
2(n+1)) ∈ [a, b] i = 0, 1, . . . , n
Con questa distribuzione delle ascisse xi si dimostra che, al crescere din →∞, il polinomio pn(x) di interpolazione converge a f(x) quando x ∈ [a, b].
−5 −4 −3 −2 −1 0 1 2 3 4 5−60
−50
−40
−30
−20
−10
0
10interpolazione funzione di Runge punti equidistanti
grado del polinomio 20
Questo comportamento e dovuto al polinomio ω(x) = (x−x0)(x−x1) . . . (x−xn) che compare nell’espressione dell’errore che assume valori di picco agliestremi dell’intervallo. L’errore di interpolazione puo essere limitato se si scel-
2010/10/26 Info-Management 23
−5 −4 −3 −2 −1 0 1 2 3 4 5−0.5
0
0.5
1
1.5
2interpolazione funzione di Runge punti equidistanti
grado del polinomio 10
−5 −4 −3 −2 −1 0 1 2 3 4 5−0.5
0
0.5
1interpolazione funzione di runge
grado del polinomio 6
Figure 2: polinomio di grado 6 interpolante nei punti di Chebyshev evidenziati
gono i punti di interpolazione in modo che
| maxx∈[a,b]
ω(x)|
sia minimo. I punti di Chebyshev sono un tentativo di aggiustare i punti diinterpolazione Si puo dimostrare che
minω(x)
maxx∈[a,b]
|ω(x)| = (b− a)−n
e il minimo e raggiunto quando
xi =a + b
2− b− a
2cos(
(2i + 1)π
2(n + 1)) ∈ [a, b] i = 0, 1, . . . , n
che sono i punti di Chebyshev. Sfortunatamente ci sono funzioni per cuil’interpolante nei punti di Chebyshev non converge e occorre cambiare strate-gia.
2010/10/26 Info-Management 24
−5 −4 −3 −2 −1 0 1 2 3 4 5−0.5
0
0.5
1interpolazione funzione di runge
grado del polinomio 10
Figure 3: polinomio di grado 10 interpolante nei punti di Chebyshev evidenziati
−5 −4 −3 −2 −1 0 1 2 3 4 50
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1interpolazione funzione di runge
grado del polinomio 20
Figure 4: polinomio di grado 20 interpolante nei punti di Chebyshev evidenziati
−5 −4 −3 −2 −1 0 1 2 3 4 5−4000
−3000
−2000
−1000
0
1000
2000
3000
4000grafico della funzione omega
grado del polinomio 6
equi.chebychev
Figure 5: funzione ω per polinomi di grado 6
2010/10/26 Info-Management 25
−5 −4 −3 −2 −1 0 1 2 3 4 5−5
−4
−3
−2
−1
0
1
2
3
4
5x 10
5 grafico della funzione omega
grado del polinomio 10
equi.chebychev
Figure 6: funzione ω per polinomi di grado 10
−5 −4 −3 −2 −1 0 1 2 3 4 5−1.5
−1
−0.5
0
0.5
1
1.5x 10
11 grafico della funzione omega
grado del polinomio 20
equi.chebychev
Figure 7: funzione ω per polinomi di grado 20