interpolazione e approssimazione di funzioni -...

25
Carla Guerrini 1 Interpolazione e Approssimazione di Funzioni Uno dei primi problemi della matematica e anche uno dei pi` u applicati ` e la costruzione di una approssimazione di una funzione data f mediante funzioni pi` u semplici, tipicamente, ma non sempre, polinomi. Una variante di questo problema ` 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 punto che non sia possibile trattare i suoi valori in modo diretto si cerca di approssi- marla con una funzione nota e pi` u semplice da calcolare. Un modo per risolvere il problema ` e di definire una classe di funzioni approssimanti e di cercare la soluzione migliore in funzione di una opportuna metrica. Una scelta possibile ` e la classe dei polinomi di grado assegnato m, P m . Definizione di Polinomio Una funzione p definita x ∈R da: p(x)= a 0 + a 1 x + a 2 x 2 + ...a n x n = n X i=0 a i x i dove n ´ e un intero non negativo e a 0 ,a 1 ,...a n sono numeri reali fissati, ´ e detto Polinomio; se p(x) ha questa rappresentazione e a n 6= 0 allora p(x) ha grado n (ordine n+1). se tutti i coefficienti a 0 ,a 1 ...a n sono nulli, allora p(xe detto il polinomio nullo. Con P n si denota l’insieme di tutti i polinomi p con grado non superiore ad n, insieme al polinomio nullo. La principale ragione della popolarit´a delle funzioni polinomiali nel calcolo numerico deriva dal fatto che ´ e facile calcolarle, cio´ e facile valutarle in un punto, sommarle,moltiplicarle derivarle e integrarle. La definizione mostra in particolare, che per valutare un polinomio in un punto ´ e necessario solo moltiplicare e sommare numeri reali un numero finito di volte. Essi giocano un ruolo centrale nella teoria dell’approssimazione e nel calcolo numerico per le loro ben note propriet´a i polinomi di grado n formano uno spazio vettoriale di dimensione finita 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 cui coefficienti sono determinati algebricamente ( e anche da un calcolatore) il numero di zeri di un polinomio di grado n non pu´o superare n,

Upload: dangxuyen

Post on 17-Feb-2019

228 views

Category:

Documents


0 download

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