41
Carla Guerrini 28/10/2009 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 discreto 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 approssimarla 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(x) ´ e 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 1

Interpolazione e Approssimazione di Funzioni - dm.unibo.itguerrini/html/an_09_10/interpolazione.pdf · Interpolazione e Approssimazione di Funzioni Uno dei primi problemi della matematica

Embed Size (px)

Citation preview

Carla Guerrini 28/10/2009

Interpolazione e Approssimazione di Funzioni

Uno dei primi problemi della matematica e anche uno dei piu applicati e la costruzione di unaapprossimazione di una funzione data f mediante funzioni piu semplici, tipicamente, ma nonsempre, polinomi. Una variante di questo problema e la costruzione di una funzione regolarea partire da un insieme discreto di punti. Quando si deve trattare una funzione complicata atal punto che non sia possibile trattare i suoi valori in modo diretto si cerca di approssimarlacon una funzione nota e piu semplice da calcolare. Un modo per risolvere il problema e didefinire una classe di funzioni approssimanti e di cercare la soluzione migliore in funzione diuna opportuna metrica. Una scelta possibile e 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

=nX

i=0

aixi

dove n e un intero non negativo e a0, a1, . . . an sono numeri reali fissati, e dettoPolinomio;

• 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 polinomio nullo.

Con Pn si denota l’insieme di tutti i polinomi p con grado non superiore ad n, insieme alpolinomio nullo.

La principale ragione della popolarita delle funzioni polinomiali nel calcolo numericoderiva dal fatto che e facile calcolarle, cioe e facile valutarle in un punto, sommarle,moltiplicarlederivarle e integrarle. La definizione mostra in particolare, che per valutare un polinomio in unpunto 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 numericoper le loro ben note proprieta

1

Carla Guerrini 28/10/2009

• 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 calcolatore

• la derivata e l’antiderivata di un polinomio sono ancora polinomi i cui coefficienti sonodeterminati algebricamente ( e anche da un calcolatore)

• il numero di zeri di un polinomio di grado n non puo superare n,

• 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 digrado dipendente da ε, tale che

maxx∈[a,b]

|f(x)− Pn(x)| < ε

Osserviamo, comunque, che il teorema di Weierstrass assicura l’esistenza del polinomioapprossimante, ma non implica che tale polinomio sia un particolare polinomio di interpolazione.In sostanza, mentre e confortante sapere che e possibile approssimare una funzione continuaf(x) con una fissata accuratezza mediante un polinomio, non e garantito che tale polinomiopossa essere ottenuto 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 haalmeno una radice reale o complessa.

CorollarioOgni equazione algebrica di grado n ha esattamente n radici reali o complesse, ciascunacontata con la sua molteplicita, cioe

p(x) = an(x− α1)m1 · (x− α2)

m2 · (x− α3)m3 . . . (x− αk)

mk

2

Carla Guerrini 28/10/2009

dove αi, i = 1, . . . k sono le radici a due a due distinte e mi, i = 1, . . . k sono lerelative molteplicita , tali che m1 + m2 + . . . mk = n

TeoremaSiano p(x), b(x) polinomi con b(x) 6= 0; allora esistono e sono unici i polinomi q(x) edr(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 possibile trovare unpolinomio 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 polinomio

Assegnato un polinomio di grado n (nella sua forma convenzionale) p(x) =Pn

i=0 aixi

Un algoritmo immediato per la sua valutazione in x0 e illustrato come segue: indicato cona il vettore contente i coefficienti del polinomio a = [a(n+1), a(n), . . . , a(2), a(1)] allora

....s = 1;p = a(1);for k=2:n+1s = s* x_0;p = p+a(k)*s;

end

quindi il calcolo di p(x) richiede 2n noltiplicazioni e n addizioni. Se scriviamo il polinomionella forma seguente

p(x) = a0 + x(a1 + x(a2 + x(a3 + . . . + x(an−1 + xan) . . .)))

si ricava il seguente metodo dovuto a Horner:

3

Carla Guerrini 28/10/2009

.....p=a(n+1)for k=n:-1:1

p=a(k)+x_0*p;endr=p;

L’algoritmo di Horner richiede n moltiplicazioni e n addizioni, quindi piu rapido del precedenteoltre che numericamente piu stabile.Lo schema di Horner e la regola di RuffiniUn caso particolarmente importante che si deduce dal teorema precedente sulla divisione didue polinomi q(x) e b(x) e quello in cui b(x) = (x − x0) per un certo x0 reale. Allora ilrisultato 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 costante diciamo 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 un punto x0 sipuo determinare il resto della divisione fra p(x) e (x − x0). A tal fine e nota la regola diRuffini:

an an−1 . . . . . . a2 a1 a0x0 xbn xbn−1 . . . xb3 xb2 xb1

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) sipossono ricavare cosı

4

Carla Guerrini 28/10/2009

bn ← anbn−1 ← an−1 + x0bnbn−2 ← an−2 + x0bn−1...

......

b1 ← a1 + x0b2r ← a0 + x0b1

con q(x) =Pn−1

i=0bi+1x = b1 + b2x+ . . . bnxn−1; ma questo schema e esattamente

quello di Horner appena visto. Se si vogliono calcolare anche i coefficienti del polinomio 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;

endr=a(1)+x_0*b(1);

Esempio

Sia dato p(x) = 1 + x − 2x2 + 3x4 e si voglia calcolare p(2). Quando la valutazione sieffettua 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 cioe p′(x0).Da quanto detto vale:

p(x) = q(x)(x− x0) + p(x0)

derivando

p′(x) = q

′(x)(x− x0) + q(x)

5

Carla Guerrini 28/10/2009

e per x = x0p′(x0) = q(x0)

dove q(x) =Pn−1

i=0bi+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).

Esempio

Si valuti p′(2) per p(x) = 1 + x− 2x2 + 3x4

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)

differenziando esplicitamente p(x) si ha:

p′(x) = 1− 4x + 12x

3, p

′(2) = 1− 8 + 96 = 89

Il calcolo di p(x0)e p′(x0) possono essere organizzati in modo da non memorizzare nessunrisultato intermedio:

....p_d=0;p=a(n+1)for k=n:-1:1p_d=p+x_0 *p_dp=a(k)+x_0*pend.......

Analogamente si possono calcolare anche le derivate di ordine maggiore. Derivando due voltep(x) = q(x)(x− x0) + r si ottiene

p′(x) = q

′(x)(x− x0) + q(x), p”(x) = q”(x)(x− x0) + 2q

′(x),

6

Carla Guerrini 28/10/2009

da cui p”(x0) = 2q′(x0). Quindi per calcolare p”(x0) e necessario calcolare q′(x0)utilizzando lo schema di Horner.

Esempio Si valuti p”(2) per p(x) = 1 + x− 2x2 + 3x4

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

In generale possiamo scrivere la relazione fra un polinomio dividendo e il suo polinomioquoziente utilizzando 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)

• i coefficienti di pj(x) sono i valori determinati applicando il metodo di Horner al

polinomio pj−1(x).

Valutazione di una polinomio: Errore InerenteCome e noto un problema si dice ben condizionato se a piccole perturbazioni dei daticorrispodono piccole perturbazioni dei risultati, pur risolvendo analiticamente il problema.Vogliamo stimare la sensibilita degli errori di un problema indipendentemente dall’algoritmoche 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 ilpolinomio perturbato risulta:

p(x) = 100− (1− 1

100)x = 100− 99

100x

7

Carla Guerrini 28/10/2009

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 alterata minimamentecomporta grossi errori per punti lontani dall’origine.In generale il problema di valutare un polinomio nella base dei monomi in punti ∈ [a, b]con a, b grandi non risulta un problema ben condizionato ossia si possono avere grossi erroriinerenti.Facciamo l’analisi dell’errore inerente:

Ein ≈nX

i=1

ciεi

8

Carla Guerrini 28/10/2009

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 +

xa1a0 + a1x

ε2 +a1x

a0 + a1xε3

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 esempio a1 dell’1%(ε1 = 0ε2 = 1/100ε3 = 0) porta Ein ad assumere il valore −101/100 cioe 101 voltemaggiore di quello iniziale. Si osservi anche che questo accade per qualunque x ∈ [100, 101]nel caso in cui ε1 = ε2 = 0 e ε3 6= 0Le basi di rappresentazione polinomiale sono infinite e numerose sono quelle di interessenumerico, nel senso che a seconda del problema, si puo individuare la base piu idonea pertrattarlo; fra queste ricordiamo la base delle potenze traslate con un centro, la forma di Newtono base delle potenze traslate con n centri; la base dei polinomi cardinali o di Lagrange ed altreancora. Una fra esse 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) =nX

i=0

biBi,n(x) x ∈ [a, b]

dove Bi,n(x) i = 0, 1, . . . , n sono i polinomi base di Bernstein di grado n sull’intervallo

[a, b] e definiti come:

Bi,n(x) =

„ni

«(b− x)n−i(x− a)i

(b− a)ni = 0, 1, . . . , n

9

Carla Guerrini 28/10/2009

e b0, b1, . . . , bn ∈ R sono i coefficienti nella base di Bernstein.

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

EsempioRiprendiamo l’esempio del polinomio precedente, ma nella base di Bernstein, sara :

B0,1(x) = 101− x B1,1(x) = x− 100

da cui

p(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 =

b0p(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 qualunque puntodi [100, 101] il coefficiente moltiplicatore di ε2, sara al massimo dell’ordine dell’unita.

10

Carla Guerrini 28/10/2009

Procediamo numericamente: si perturba il coefficiente b1 dell’1% per cui il polinomioperturbato risulta:

p(x) = −(1− 1

100)(x− 100) = − 99

100(x− 100)

e valutandoli in x = 101 si ha

p(101) = −1 ; ep(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 della stessa entita.Perturbiamo x dell’1% , se x=101 sara x = 99

100101 = 99.99 allora

p(101) = −1 ep(99.99) = 0.01

commetendo un errore relativo

|p(101)− ep(99.99)

p(101)| = 101

100

cosa si puo fare? Poiche i polinomi sono invarianti per traslazione e scala nell’intervallo didefinizione, nelle applicazioni si utilizzano i traslati in [0, 1]; e a qu esto caso ci si puo semprericondurre mediante un cambio di variabile:

x ∈ [a, b] → t ∈ [0, 1], t =x− a

b− ax = a + t(b− a)

11

Carla Guerrini 28/10/2009

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)

Riassumendo avremo quindi

p(t) =

nX

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 +

b1p(t)

(t− 0)ε2 +tp′(t)p(t)

ε3

dove i primi due termini restano uguali in valore, mentre il terzo pur restando p(t) lo stessopotenzialmente puo avere tp′(t) inferiore, questo e sicuramente vero per t ∈ [0, 1], inoltresi ha p′(t) = (b − a)p′(x) verra sicuramente ridotto se (b − a) < 1. Nel nostro esempioabbiamo

p(t) = −t t ∈ [0, 1]

12

Carla Guerrini 28/10/2009

b− a = 1 p′(t) = p′(x). Perturbiamo t dell’1% allora t = 99100 ; se t = 1 sara t = 0.99

allora p(1) = −1 ep(0.99) = −0.99 con un errore relativo

|p(1)− ep(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).

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.25 perk = 0, 1, . . . , 8, si puo utilizzare il seguente codice:À p = [3, 0, 0, 0, 0, 2, 0, 1]; x = [−1 : 0.25 : 1]

13

Carla Guerrini 28/10/2009

À polyval(p, x)ans = .......

Con il comando p = conv(p1, p2) si calcolano i coefficienti del polinomio ottenutocome 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 e del resto della divisione fra p1e p2, cioe q ed r tali chep1 = conv(p2, q) + r

Esempio

Consideriamo i polinomi p1(x) = x4 − 1 e p2(x) = x3 − 1, calcoliamo il prodotto e ladivisioneÀ 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) = x er(x) = x− 1 tali che p1(x) = q(x) ∗ p2(x) + r(x).

14

Carla Guerrini 28/10/2009

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 funzioni reali e unaloro base di rappresentazione ϕj(x), j = 0, 1, . . . , n per cui ogni elemento ϕ ∈ P risultadefinito da una loro combinazione lineare a coefficienti reali:

nX

j=0

cjϕj(x)

allora 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 che la definiscono tale che

φ∗(xi) = fi i = 0, 1, . . . , n

La scelta dello spazio solitamente e dettata dal fatto che esista sempre una soluzione unicaal problema, successivamente dalla regolarita desiderata per l’interpolante e dalla particolaritadei dati.

Abbiamo visto che risulta molto importante scegliere la classe delle funzioni ϕj(x) sia perquanto riguarda il condizionamento sia per quanto riguarda il modello dell’approssimazione. Lascelta deve essere motivata in modo da tener conto delle specifiche proprieta della f(x). Inoltredevono essere facilmente calcolabili e dotate di buone proprieta di regolarita. Generalmente siutilizzano:

15

Carla Guerrini 28/10/2009

• 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 funzione approssimantela f richiedendo che abbia gli stessi valori in certi punti. Se infatti della f sono noti soloapprossimazioni dei valori della f , per esempio i dati provengono da misurazioni, e megliousare un metodo di approssimazione che possa attenuare gli errori dovuti alle misurazioni.In queste lezioni tratteremo solamente il caso dell’interpolazione polinomiale che garantiscesempre l’esistenza e l’unicita della soluzione, una buona regolarita ed una buona ricostruzionein casi particolari.

TeoremaDati (n + 1) punti di interpolazione (xi, fi), i = 0, 1, . . . , n con xj 6= xk k 6= j esisteed 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) =

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 il sistema linearedi 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)

16

Carla Guerrini 28/10/2009

e i punti xi sono per ipotesi distinti, ne segue che il sistema lineare ha una ed una solasoluzione e quindi il polinomio p(x) esiste ed e unico.Esaminiamo una costruzione diretta, ma in generale meno conveniente, che consiste nellarisoluzione del sistema lineare aventi come incognite i coefficienti del 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:nn = length(x); V = ones(n,n); for j=2:n% costruisce la colonna j.V(:,j) = x.*V(:,j-1);enda = 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

pVal = z.*pVal + a(k);end________________________________________________________________________________% Script File: Show_pol_interp

17

Carla Guerrini 28/10/2009

% 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 allx0 = 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 sivuole il valore di p(x) in uno o piu punti, e per calcolarlo non e conveniente risolvere il sistema

lineare, perche cio richiederebbe un numero di operazioni dell’ordine di n3/3 operazionimoltiplicative, inoltre la matrice di Vandermonde puo essere mal condizionata e quindi ilcalcolo di p(x) sarebbe numericamente instabile.Il polinomio di interpolazione pur essendo unico puo essere rappresentato in diverse forme piu

18

Carla Guerrini 28/10/2009

convenienti sia dal punto di vista del costo computazionale che della stabilita.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 la condizione diinterpolazione

p(xj) = yj ∀j = 0, 1, . . . , n

Lo vogliamo determinare esprimendolo nella base di Bernstein ossia nella forma:

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 di Bernstein 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 ordine n + 1 in forma matriciale

Bb = y

con

B =

0BBB@

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)

1CCCA

d =

0BBB@

b0b1...bn

1CCCA , y =

0BBB@

y0y1...yn

1CCCA

19

Carla Guerrini 28/10/2009

tale sistema ammette soluzione unica b∗1, b∗2, . . . , b∗n)T che fornisce i coefficienti del solopolinomio p(x) di grado ≤ n interpolante n + 1 dati distinti. Nella seguente tabellasono riportati gli indici di condizionamento delle matrici calcolate su punti equidistantii nell’intervallo di definizione mediante polinomi di Bernstein 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

20

Carla Guerrini 28/10/2009

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 di Lagrange come segue:

p(x) =

nX

i=0

yiLi,n(x), x ∈ [a, b]

Le funzioni di Lagrange sono definite per i = 0, 1, . . . , n:

Li,n(x) =x− x0xi − 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 dei polinomi digrado 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 lecondizioni di interpolazione p(xi) = yi, ∀i, nella forma di Lagrange

p(x) = a0L0,n(x) + a1L1,n(x) + . . . + anLn,n(x)

21

Carla Guerrini 28/10/2009

imponendo le condizioni di interpolazione si ottiene il sistema lineare

0BBB@

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)

1CCCA ·

0BBB@

a0a1...an

1CCCA =

0BBB@

y0y1...yn

1CCCA

Si osservi che la matrice L risulta uguale alla matrice identita di ordine n + 1, In+1. Quindinell’interpolazione secondo Lagrange non cerchiamo i coefficienti ai perche sono identicamenteuguali ai valori noti yi. In questo caso cerchiamo proprio le funzioni base di Lagrange costruitesulle ascisse xi. L’idea e di risolvere gli n + 1 problemi di interpolazione dove le ascissex0, x1, . . . , xn sono quelle del problema iniziale in corrispondenza delle quali si hanno n+1insiemi 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 + 1 soluzioniparziali:

p(x) =

nX

i=0

yiLi,n(x)

e il polinomio unico di interpolazione e

Li,n(xj) = δi,j ⇒ p(xi) =nX

i=0

yiLi,n(xi) = yi ∀i.

22

Carla Guerrini 28/10/2009

−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

EsempioDati i punti x0 = 0, x1 = 1, x2 = 3, le funzioni base di Lagrange ( anche dette funzionicardinali) 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

23

Carla Guerrini 28/10/2009

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

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’esempioprecedente le tre funzioni base di Lagrange hanno tutte grado 2. Se i punti (xi, yi) fosserotutti su una retta, la combinazione lineare si ridurrebbe in modo che il polinomio p risultanteabbia 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

24

Carla Guerrini 28/10/2009

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) =

Pi yiLi,n(x) in un punto x 6= xi, ∀i, lo si potrebbe trasformare nella forma

monomiale p(x) =P

i aixi e poi applicare l’algoritmo di Ruffini-Horner. Procedere in

questo modo, vuole dire dover calcolare gli ai che richiedono oltre 6n2 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)

Quindi possiamo scrivere

p(x) =nX

i=0

yiLi,n(x) = ω(x)nX

i=0

zix− xi

conzi =

yiΠn

j 6=i,j=0(xi − xj)

25

Carla Guerrini 28/10/2009

InfattinX

i=0

yiLi,n(x) =nX

i=0

yiΠnj 6=i,j=0

x− xj

xi − xj=

=nX

i=0

yi

Πnj 6=i,j=0(x− xj)

Πnj 6=i,j=0

(xi − xj)

=nX

i=0

yiω(x)/(x− xi)

Πnj 6=i,j=0

(xi − xj)=

=

nX

i=0

yiΠn

j 6=i,j=0(xi − xj)

ω(x)

x− xi

=

nX

i=0

ziω(x)

x− xi

= ω(x)

nX

i=0

zix− xi

ove abbiamo posto

zi =yi

Πnj 6=i,j=0

(xi − xj)

Quindi per calcolare

p(x) =nX

i=0

yiLi,n(x) = ω(x)nX

i=0

zix− 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 xj − xi, 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).

26

Carla Guerrini 28/10/2009

In totale questo calcolo richiede n2/2 addizioni ed n2 prodotti. Per calcolare il valore dellostesso polinomio p in un altro punto x conviene sempre usare questa forma perche gli scalarizi dipendono solo da xi e possono essere calcolati una volta per tutte. Quindi il calcolo inun altro punto x richiede solo il passo finale cioe n somme e 2n prodotti. Infine lasciandoinalterati gli xi e variando solo le ordinate yi si puo ancora calcolare p(x) con n somme e2n prodotti aggiuntivi.

Riepilogo

RiepilogoI costi computazionali dell’interpolazione con la forma di Lagrange sono i seguenti:

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)z = errinterp

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 polinomion=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));endden(n)=prod(x(n)-x(1:n-1));m=length(xx);

27

Carla Guerrini 28/10/2009

for i=1:momega=prod(xx(i)-x);if omega==0

[nz k]=max(xx(i)==x);yy(i)=y(k);

elseyy(i)=omega*sum(y./(den.*(xx(i)-x)));

endend

P. di Lagrange P.di Newton

1 punto n2/2(+) + n2(×) n2(+) + n2/2(×)

in m punti n2/2 + 2mn)(+)+ (n2 + 2mn)(+)+

+(n2 + 2mn)(×) +n2/2 + 2mn)(×)

28

Carla Guerrini 28/10/2009

Analisi dell’errore di interpolazione

Dati n+1 osservazioni fi di una funzione f(x) in corrispondenza di n+1 ascisse distinteabbiamo visto alcuni metodi per costruire il polinomio di grado minimo che interpola i punti(xi, fi). In questo caso ha senso chiedersi che errore si commette in un punto x nelconsiderare il valore di p(x) al posto di f(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 di ordine n + 1.

Sia [a, b] un intervallo di R limitato e chiuso contenente le ascisse distinte xi. Sia x ∈ [a, b]un punto qualsiasi, distinto dagli xi. Esiste allora un punto ξ ( dipendente da x) interno ad[a, b] per cui:

R(x) := f(x)− p(x) =ω(x)

(n + 1)!f

n+1(ξ)

conω(x) = (x− x0)(x− x1) . . . (x− xn) = Π

nk=0(x− xk).

CorollarioSi indichi con

Mn+1 = maxx∈[a,b]

|fn+1(x)|

29

Carla Guerrini 28/10/2009

allora un limite superiore ad R(x) = f(x)− p(x) e dato da

|R(x)| = |ω(x)|(n + 1)!

Mn+1.

Esempio

f(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

quindi in altre parole

limn→∞|p(x)− f(x)| = 0

Il polinomio p di interpolazione converge uniformemente ad f su [a, b] quando il numero ndi punti xi di interpolazione tende a ∞.

30

Carla Guerrini 28/10/2009

Estrapolazione L’espressione dell’erroe R evidenzia come nel caso di estrapolazione

x /∈ [a, b] := [mini

xi, maxi

xi]

l’errore R puo aumentare notevolmente, assieme a |ω(x)|.

Errori nell’interpolazione, limitazioni dell’errore, convergenza e punti diChebyshev Nella trattazione del problema di interpolazione sino ad ora abbiamo trattatole ordinate yi dei punti di interpolazione (xi, yi) come numeri arbitrari. Assumiamo chesoddisfino la relazione f(xi) = yi dove f abbia tutte le derivate necessarie. Quindi si diceche il polinomio p(x) calcolato interpola la f in x0, x1, . . . , xn. Tale polinomio vienespesso costruito per 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 ( perchein questi punti l’errore e zero).

Aumentando il numero di punti di interpolazione aumenta in corrispondenza il grado delpolinomio, 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)

31

Carla Guerrini 28/10/2009

se interpolata con punti equispaziati nell’intervallo [−5, 5] l’interpolante diverge incorrispondenza degli estremi dell’intervallo. Si puo dimostrare che al crescere di n la successionedei polinomi di interpolazione {p(n} costruiti sulle ascisse equidistanti:

xi = i10

n− 5, i = 0, 1, . . . , n

non converge alla funzione di Runge, perche gli errori diventano arbitrariamente grandispecialmente nei punti vicino agli estremi dell’intervallo. Quindi imporre la regolarita sulla fnon e sufficiente a garantire la convergenza dell’interpolazione.Se si considerano come ascisse di interpolazione gli n + 1 zeri del polinomio di Chebyshev digrado n rispettivamente:

xi = cos((2i+1)π2(n+1)

) ∈ [−1, 1] i = 0, 1, . . . , n

oppure

xi = a+b2 − b−a

2 cos((2i+1)π2(n+1)

) ∈ [a, b] i = 0, 1, . . . , n

−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

Con questa distribuzione delle ascisse xi si dimostra che, al crescere di n → ∞, ilpolinomio pn(x) di interpolazione converge a f(x) quando x ∈ [a, b].

32

Carla Guerrini 28/10/2009

−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

33

Carla Guerrini 28/10/2009

−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

34

Carla Guerrini 28/10/2009

−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 agli estremi dell’intervallo.L’errore di interpolazione puo essere limitato se si scelgono i punti di interpolazione in modoche

| maxx∈[a,b]

ω(x)|

sia minimo. I punti di Chebyshev sono un tentativo di aggiustare i punti di interpolazione

35

Carla Guerrini 28/10/2009

−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

36

Carla Guerrini 28/10/2009

−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

37

Carla Guerrini 28/10/2009

−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

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.

38

Carla Guerrini 28/10/2009

−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

39

Carla Guerrini 28/10/2009

−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

40

Carla Guerrini 28/10/2009

−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

Sfortunatamente ci sono funzioni per cui l’interpolante nei punti di Chebyshev nonconverge e occorre cambiare strategia.

41