Carla Guerrini 28/10/2009. Interpolazione e Approssimazione di Funzioni

Documenti analoghi
Interpolazione polinomiale. Interpolazione polinomiale

Interpolazione polinomiale. Interpolazione polinomiale

Interpolazione e approssimazione di funzioni

Interpolazione. Corso di Calcolo Numerico, a.a. 2008/2009. Francesca Mazzia. Dipartimento di Matematica Università di Bari.

Approssimazione di dati e funzioni

Lezione 3 Interpolazione Polinomiale.

b vettore(termine noto) y* proiezione ortogonale di b

Quali condizionisi si possono richiedere sulla funzione interpolante?

Corso di Matematica per la Chimica

Esercitazione 7: Aggiornamento minimi quadrati.

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 4 - Polinomi e Interpolazione polinomiale

Corso di Calcolo Numerico

2. Costruire un M function file di Matlab che calcola il valore del

Approssimazione di dati e funzioni

Interpolazione. Lucia Gastaldi. DICATAM - Sez. di Matematica,

Esame di Calcolo Numerico per Informatica A.A. 2010/11 Proff. S. De Marchi e M. R. Russo 20 giugno 2011

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 4 - Polinomi e Interpolazione polinomiale

Metodi Numerici con elementi di Programmazione (A.A )

Complementi di Matematica e Calcolo Numerico A.A Polinomi e vettori

Appunti di Analisi Numerica

Lezione 5, 5/11/2014

Interpolazione di Funzioni

INTERPOLAZIONE. Francesca Pelosi. Dipartimento di Matematica, Università di Roma Tor Vergata. CALCOLO NUMERICO e PROGRAMMAZIONE

Interpolazione. Lucia Gastaldi. DICATAM - Sez. di Matematica,

Calcolo integrale. Regole di integrazione

n (x i x j ), det V = i>j

Appunti di Calcolo Numerico. Capitolo 3

0.1 Spazi Euclidei in generale

Analisi Numerica: Introduzione

Differenze divise. Polinomio di interpolazione nella forma di Newton. Proprietà. Se n=0. Simmetria. Ricorsività. Abbiamo un solo punto

Analisi Numerica: interpolazione

Interpolazione polinomiale. Gabriella Puppo

Corso di Analisi Numerica

INTERPOLAZIONE POLINOMIALE

f(x) dx = F (b) F (a) Formula di quadratura o di integrazione numerica c i f(x i ) + R n (f)

Corso di Calcolo Scientifico

Anno accademico

Il problema lineare dei minimi quadrati

Interpolazione e approssimazione di dati

Esercizi proposti di Analisi Numerica

Calcolo Numerico. Corso di Laurea in Ingegneria Elettronica Appello del 17 gennaio A(x) =

Complementi di Matematica e Calcolo Numerico A.A

Analisi degli errori

Equazioni differenziali

Calcolo Numerico (A.A ) Lab n. 12 Approssimazione

Interpolazione e approssimazione di dati

METODI DI COLLOCAZIONE POLINOMIALE (Metodi di Runge-Kutta continui) November 30, 2004

1 Il polinomio minimo.

Corso di Analisi Numerica - AN410. Parte 5: formule di quadratura. Roberto Ferretti

Liceo Scientifico Statale S. Cannizzaro Palermo Classe III D EQUAZIONI POLINOMIALI Divisione di polinomi, teorema del resto e teorema di Ruffini

Metodi di Iterazione Funzionale

Corso di Calcolo Numerico

Metodi Numerici per l Approssimazione degli Zeri di una Funzione

Analisi Numerica: quadratura

Corso di Calcolo Numerico

1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso

Raccolta di esercizi di Calcolo Numerico Prof. Michela Redivo Zaglia

INTERPOLAZIONE. Introduzione

Raccolta di Esercizi d esame ( di Calcolo Numerico) Prof. Laura Pezza. Equazioni non lineari

ISTITUTO DI ISTRUZIONE SUPERIORE A. EINSTEIN PROGETTO LAUREE SCIENTIFICHE

Zeri di funzioni e teorema di Sturm

ARGOMENTI DEL CORSO CALCOLO NUMERIC0

Lezione 4 Quadratura Numerica. Fernando Palombo

Istituzioni di Matematiche, Integrali fratti. corso di laurea in Scienze geologiche. Mauro Costantini

Elementi di Algebra e di Matematica Discreta Strutture algebriche: anelli

+ Analisi Numerica (1 modulo) Docente: M.Gaviano; domande di ripasso a.a

Interpolazione composita di Lagrange

Risoluzione di sistemi lineari sparsi e di grandi dimensioni

Argomento 13 Sistemi lineari

Universita degli Studi di Ancona - Facolta di Ingegneria Laurea in Ing. Elettronica (VO) Ing. Informatica e Automatica - Ing. delle Telecomunicazioni

Corso di Analisi Numerica

Sistemi sovradeterminati

Analisi Numerica I Approssimazione polinomiale

Corso di Matematica per la Chimica

Calcolo Numerico A.A Lab. 6

1 Successioni di funzioni

Polinomi. Corso di accompagnamento in matematica. Lezione 1

Serie trigonometriche e di Fourier Ci occuperemo di serie le cui ridotte N-esime sono polinomi trigonometrici di grado (o ordine) N:

Capitolo 2. Equazioni non lineari. 2.1 Metodo di bisezione. 2.2 Ordine dei metodi

I teoremi della funzione inversa e della funzione implicita

Interpolazione polinomiale.

x 3 2x 2 + 6x x 4 3x = lim x(6 2x + x 2 ) x( 3 + x 3 ) (6 2x + x 2 ) ( 3 + x 3 ) = lim = 2

Analisi degli Errori

Analisi di Fourier e alcune equazioni della fisica matematica 1. TERZA LEZIONE Serie di funzioni Serie di potenze

Interpolazione polinomiale

1 Esercizi relativi al Capitolo 1

Equazioni e sistemi non lineari

Polinomi Definizioni fondamentali

Aritmetica 2009/10 Compitino 1/12/2009. (a) Contare gli elementi nilpotenti di A. (b) Contare gli elementi zero-divisori di A.

LEZIONE 15. (15.1.2) p(x) = a 0 x n + a 1 x n a n 1 x + a n = a h x n h.

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara

E, la successione di numeri {f n (x 0. n f n(x) (15.1)

Interpolazione polinomiale a tratti

Problema. Sistemi lineari. Problema. Problema. Quali sono i potenziali in ogni nodo? Leggi di Kirkoff e di Ohm:

Transcript:

Interpolazione e Approssimazione di Funzioni Uno dei primi problemi della matematica e anche uno dei più applicati è la costruzione di una approssimazione di una funzione data f mediante funzioni più semplici, tipicamente, ma non sempre, polinomi. Una variante di questo problema è 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ù semplice da calcolare. Un modo per risolvere il problema è di definire una classe di funzioni approssimanti e di cercare la soluzione migliore in funzione di una opportuna metrica. Una scelta possibile è la classe dei polinomi di grado assegnato m, Pm. Definizione di Polinomio Una funzione p definita x R da: p(x) = a 0 + a 1 x + a 2 x 2 +... anx n nx = a i x i i=0 dove n é un intero non negativo e a 0, a 1,... an sono numeri reali fissati, é detto Polinomio; se p(x) ha questa rappresentazione e an 0 allora p(x) ha grado n (ordine n+1). se tutti i coefficienti a 0, a 1... an sono nulli, allora p(x) é detto il polinomio nullo. 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 popolaritá delle funzioni polinomiali nel calcolo numerico deriva dal fatto che é facile calcolarle, cioé é facile valutarle in un punto, sommarle,moltiplicarle derivarle e integrarle. La definizione mostra in particolare, che per valutare un polinomio in un punto é 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á 1

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 sono determinati algebricamente ( e anche da un calcolatore) il numero di zeri di un polinomio di grado n non puó superare n, inoltre valgono i seguenti teoremi: Teorema (Weierstrass) Se f(x) è una generica funzione continua sull fintervallo limitato e chiuso [a, b], per ogni ɛ > 0 esiste un polinomio Pn(x) di grado n(ɛ), cio e di grado dipendente da ɛ, tale che max f(x) P n(x) < ɛ x [a,b] Osserviamo, comunque, che il teorema di Weierstrass assicura l esistenza del polinomio approssimante, ma non implica che tale polinomio sia un particolare polinomio di interpolazione. In sostanza, mentre è confortante sapere che è possibile approssimare una funzione continua f(x) con una fissata accuratezza mediante un polinomio, non è garantito che tale polinomio possa essere ottenuto con un algoritmo conveniente. Teorema Pn é 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. Corollario Ogni equazione algebrica di grado n ha esattamente n radici reali o complesse, ciascuna contata con la sua molteplicitá, cioé p(x) = an(x α 1 ) m 1 (x α 2 ) m 2 (x α 3 ) m 3... (x α k ) m k 2

dove α i, i = 1,... k sono le radici a due a due distinte e m i, i = 1,... k sono le relative molteplicitá, tali che m 1 + m 2 +... m k = n Teorema Siano p(x), b(x) polinomi con b(x) 0; allora esistono e sono unici i polinomi q(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) 0 é sempre possibile trovare 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 polinomio Assegnato un polinomio di grado n (nella sua forma convenzionale) p(x) = P n i=0 a i x i Un algoritmo immediato per la sua valutazione in x 0 é illustrato come segue: indicato con a 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+1 s = s* x_0; p = p+a(k)*s; end quindi il calcolo di p(x) richiede 2n noltiplicazioni e n addizioni. Se scriviamo il polinomio nella forma seguente p(x) = a 0 + x(a 1 + x(a 2 + x(a 3 +... + x(a n 1 + xan)...))) si ricava il seguente metodo dovuto a Horner: 3

... 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 più rapido del precedente oltre che numericamente più stabile. Lo schema di Horner e la regola di Ruffini Un caso particolarmente importante che si deduce dal teorema precedente sulla divisione di due polinomi q(x) e b(x) é quello in cui b(x) = (x x 0 ) per un certo x 0 reale. Allora il risultato dice che esistono unici i polinomi q(x) e r(x) per cui p(x) = q(x) (x x 0 ) + r(x) dove r(x) = 0 o r(x) ha grado zero; in ogni caso r(x) é un polinomio costante diciamo r, cosí: p(x) = q(x) (x x 0 ) + r; Se ora valutiamo p(x) in x 0 si trova che p(x 0 ) = r. Quindi vale il seguente: Teorema Il resto della divisione del polinomio p(x) per (x x 0 ) é r = p(x 0 ). Dal teorema del resto enunciato si deduce che per valutare un polinomio in un punto x 0 si puó determinare il resto della divisione fra p(x) e (x x 0 ). A tal fine é nota la regola di Ruffini: an a n 1...... a 2 a 1 a 0 x 0 xbn xb n 1... xb 3 xb 2 xb 1 bn b n 1...... b 2 b 1 r da cui noti i coefficienti a 0, a 1,... an ed x 0 i coefficienti b i ed il resto r = p(x 0 ) si possono ricavare cosí 4

bn an b n 1 a n 1 + x 0 bn b n 2 a n 2 + x 0 b n 1... b 1 a 1 + x 0 b 2 r a 0 + x 0 b 1 con q(x) = P n 1 i=0 b i+1 x = b 1 + b 2 x +... b nx n 1 ; ma questo schema é 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; end r=a(1)+x_0*b(1); Esempio Sia dato p(x) = 1 + x 2x 2 + 3x 4 e si voglia calcolare p(2). Quando la valutazione si effettua manualmente la regola di Ruffini é molto comoda: 3 0 2 1 1 2 6 12 20 42 3 6 10 21 43 = P(2) Valutazione di un polinomio e della sua derivata Si voglia ora determinare il valore della derivata prima di p(x) per x = x 0 cioé p (x 0 ). Da quanto detto vale: p(x) = q(x)(x x 0 ) + p(x 0 ) derivando p (x) = q (x)(x x 0 ) + q(x) 5

e per x = x 0 p (x 0 ) = q(x 0 ) dove q(x) = P n 1 i=0 b i+1 xi e i coefficienti b i per i = 1, 2,..., n sono quelli che si ottengono applicando l algoritmo di Ruffini Horner per valutare p(x 0 ). Esempio Si valuti p (2) per p(x) = 1 + x 2x 2 + 3x 4 3 0 2 1 1 2 6 12 20 42 3 6 10 21 43 = P(2) 2 6 24 68 3 12 34 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(x 0 )e p (x 0 ) possono essere organizzati in modo da non memorizzare 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. Derivando due volte p(x) = q(x)(x x 0 ) + r si ottiene p (x) = q (x)(x x 0 ) + q(x), p (x) = q (x)(x x 0 ) + 2q (x), 6

da cui p (x 0 ) = 2q (x 0 ). Quindi per calcolare p (x 0 ) é necessario calcolare q (x 0 ) utilizzando lo schema di Horner. Esempio Si valuti p (2) per p(x) = 1 + x 2x 2 + 3x 4 3 0 2 1 1 2 6 12 20 42 3 6 10 21 43 = P(2) 2 6 24 68 3 12 34 89 = P (2) 2 3 6 18 36 70 = P"(2)/2 In generale possiamo scrivere la relazione fra un polinomio dividendo e il suo polinomio quoziente utilizzando un indice p j (x) = p j+1 (x)(x x 0 ) + p (j) (x 0 ), j = 0,..., n 1, allora p(x) = p 0 (x) p j (x 0 ) = j!p j (x 0 ) i coefficienti di p j (x) sono i valori determinati applicando il metodo di Horner al polinomio p j 1 (x). Valutazione di una polinomio: Errore Inerente Come é noto un problema si dice ben condizionato se a piccole perturbazioni dei dati corrispodono piccole perturbazioni dei risultati, pur risolvendo analiticamente il problema. Vogliamo stimare la sensibilitá degli errori di un problema indipendentemente dall algoritmo che si userá per risolverlo. Esempio p(x) = a 0 + a 1 x = 100 x vogliamo valutarlo per x 0 [100, 101]. Si perturba il coefficiente a 1 del l 1%, per cui il polinomio perturbato risulta: p(x) = 100 (1 1 99 )x = 100 100 100 x 7

valutiamolo per x = 101: p(101) = 1; p(101) = 0.01 commettendo un errore relativo dato da: p(101) p(101) = 101 1 p(101) 100 il coefficiente a 1 rappresenta l inclinazione della retta, la quale anche se alterata minimamente comporta 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 errori inerenti.facciamo l analisi dell errore inerente: nx E in c i ɛ i i=1 8

dove c i = x i f(x) con ɛ f(x) x i = x i x i i x i e ɛ i < u per i = 1, 2,..., n nel caso specifico E in a 0 a 0 + a 1 x ɛ 1 + xa 1 a 0 + a 1 x ɛ 2 + a 1 x a 0 + a 1 x ɛ 3 Nel nostro caso a 0 = 100, a 1 = 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 a 1 dell 1% (ɛ 1 = 0ɛ 2 = 1/100ɛ 3 = 0) porta E in ad assumere il valore 101/100 cioè 101 volte maggiore di quello iniziale. Si osservi anche che questo accade per qualunque x [100, 101] nel caso in cui ɛ 1 = ɛ 2 = 0 e ɛ 3 0 Le basi di rappresentazione polinomiale sono infinite e numerose sono quelle di interesse numerico, nel senso che a seconda del problema, si può individuare la base più idonea per trattarlo; fra queste ricordiamo la base delle potenze traslate con un centro, la forma di Newton o base delle potenze traslate con n centri; la base dei polinomi cardinali o di Lagrange ed altre ancora. Una fra esse che presenta svariate proprietà numeriche è la seguente. Polinomi nella base di Bernstein Con polinomio nella base di Bernstein si intende una espressione del tipo nx p(x) = b i B i,n (x) x [a, b] i=0 dove B i,n (x) i = 0, 1,..., n sono i polinomi base di Bernstein di grado n sull intervallo [a, b] e definiti come: B i,n (x) = n i «(b x) n i (x a) i (b a) n i = 0, 1,..., n 9

e b 0, b 1,..., bn R sono i coefficienti nella base di Bernstein. 1 0.8 0.6 0.4 0.2 0 0 0.2 0.4 0.6 0.8 1 1.2 Figure 1: Polinomi di Bernstein di grado 3 Esempio Riprendiamo l esempio del polinomio precedente, ma nella base di Bernstein, sarà : B 0,1 (x) = 101 x B 1,1 (x) = x 100 da cui p(x) = 100 x = b 0 B 0,1 (x) + b 1 B 1,1 (x) = 0(101 x) 1(x 100) ossia b 0 = 0 b 1 = 1 Rieseguendo l analisi sull errore inerente si ha: E in = c 1 ɛ 1 + c 2 ɛ 2 + c 3 ɛ 3 = b 0 p(x) (101 x)ɛ 1 + b 1 p(x) (x 100)ɛ 2 + xp (x) p(x) ɛ 3 perturbando solo b 1 (cioè ɛ 1 = ɛ 3 = 0, ma ɛ 2 0), valutando in un qualunque punto di [100, 101] il coefficiente moltiplicatore di ɛ 2, sarà al massimo dell ordine dell unità. 10

Procediamo numericamente: perturbato risulta: si perturba il coefficiente b 1 dell 1% per cui il polinomio p(x) = (1 1 99 )(x 100) = (x 100) 100 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) = 1 p(101) 100 cioè la variazione iniziale dell 1% porta a una variazione sul risultato della stessa entità. Perturbiamo x dell 1%, se x=101 sarà x = 100 99 101 = 99.99 allora p(101) = 1 ep(99.99) = 0.01 commetendo un errore relativo p(101) ep(99.99) = 101 p(101) 100 cosa si può fare? Poiché i polinomi sono invarianti per traslazione e scala nell intervallo di definizione, nelle applicazioni si utilizzano i traslati in [0, 1]; e a qu esto caso ci si puó sempre ricondurre mediante un cambio di variabile: x [a, b] t [0, 1], t = x a b a x = a + t(b a) 11

Infatti si ha: n i Riassumendo avremo quindi B i,n (x) = B i,n (a + t(b a)) = «(b a t(b a)) n i (a + t(b a) a) i (b a) n = «n [(b a)(1 t))] n i [t(b a)] i i (b a) n = «n (1 t) n i t i = B i i,n (t) nx p(t) = b i B i,n (t) t [0, 1] i=0 Ritornando al nostro esempio si ha: p(x) = b 0 (101 x) + b 1 (x 100) x [100, 101] e la stima dell errore inerente p(t) = b 0 (1 t) + b 1 (t 0) t [0, 1] E in = b 0 p(t) (1 t)ɛ 1 + b 1 p(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 stesso potenzialmente può avere tp (t) inferiore, questo è sicuramente vero per t [0, 1], inoltre si ha p (t) = (b a)p (x) verrà sicuramente ridotto se (b a) < 1. Nel nostro esempio abbiamo p(t) = t t [0, 1] 12

b a = 1 p (t) = p (x). Perturbiamo t dell 1% allora t = 100 99 ; se t = 1 sarà t = 0.99 allora p(1) = 1 ep(0.99) = 0.99 con un errore relativo p(1) ep(0.99) = 1 p(1) 100 Riassumendo, se si vuole valutare p(x 0 ) si determina t 0 = x 0 a b a,si calcola p(x 0 ) con p(t 0 ) polinomio di Bernstein in [0, 1] e sarà p(x 0 ) = p(t 0 ). Esistono varie funzioni M atlab che manipolano i polinomi: POLYVAL, POLYFIT, ROOT, CONV Si voglia valutare p(x) = 3x 7 + 2x 2 + 1 nei punti equidistanti x k = 1 + k 0.25 per k = 0, 1,..., 8, si puó utilizzare il seguente codice: p = [3, 0, 0, 0, 0, 2, 0, 1]; x = [ 1 : 0.25 : 1] 13

polyval(p, x) ans =... Con il comando p = conv(p1, p2) si calcolano i coefficienti del polinomio ottenuto 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 e del resto della divisione fra p1 e p2, cioé q ed r tali che p1 = conv(p2, q) + r Esempio Consideriamo i polinomi p1(x) = x 4 1 e p2(x) = x 3 1, calcoliamo il prodotto e 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 0 r = 0 0 0 1 1 Troviamo pertanto i polinomi p(x) = p1(x)p2(x) = x 7 x 4 x 3 + 1, q(x) = x e r(x) = x 1 tali che p1(x) = q(x) p2(x) + r(x). 14

Interpolazione Di una funzione f(x) siano noti i valori f i = f(x i ) per i = 0, 1,..., n, in corrispondenza di n + 1 punti distinti x i. Si vuole determinare una funzione φ tale che φ(x i ) = f i i = 0, 1,..., n Una tale funzione φ si dice che interpola la f nei punti x i i = 0, 1,..., n. Nel caso generale viene individuato uno spazio di dimensione finita P di funzioni reali e una loro base di rappresentazione ϕ j (x), j = 0, 1,..., n per cui ogni elemento ϕ P risulta definito da una loro combinazione lineare a coefficienti reali: nx c j ϕ j (x) j=0 allora il problema di interpolare i dati assegnati con una funzione φ P consiste nel determinare la funzione φ o meglio i coefficienti c 0, c 1,... c n che la definiscono tale che φ (x i ) = f i i = 0, 1,..., n La scelta dello spazio solitamente è dettata dal fatto che esista sempre una soluzione unica al problema, successivamente dalla regolarità desiderata per l interpolante e dalla particolarità dei dati. Abbiamo visto che risulta molto importante scegliere la classe delle funzioni ϕ j (x) sia per quanto riguarda il condizionamento sia per quanto riguarda il modello dell approssimazione. La scelta deve essere motivata in modo da tener conto delle specifiche proprietá della f(x). Inoltre devono essere facilmente calcolabili e dotate di buone proprietá di regolaritá. Generalmente si utilizzano: 15

la classe delle funzioni razionali la classe delle funzioni trigonometriche. la classe delle funzioni esponenziali Occorre tener presente che non sempre é consigliabile determinare una funzione approssimante la f richiedendo che abbia gli stessi valori in certi punti. Se infatti della f sono noti solo approssimazioni dei valori della f, per esempio i dati provengono da misurazioni, é meglio usare un metodo di approssimazione che possa attenuare gli errori dovuti alle misurazioni. In queste lezioni tratteremo solamente il caso dell interpolazione polinomiale che garantisce sempre l esistenza e l unicità della soluzione, una buona regolarità ed una buona ricostruzione in casi particolari. Teorema Dati (n + 1) punti di interpolazione (x i, f i ), i = 0, 1,..., n con x j x k k j esiste ed é unico il polinomio p Pn che verifica le condizioni p(x i ) = f(x i ) Dimostrazione Si consideri il vettore a = (a 0, a 1,..., an) T dei coefficienti del polinomio p(x) = a 0 +a 1 x+a 2 x 2 +... anx n, il vettore f = (f 0, f 1,..., fn) T e la matrice V = {ν i,j } detta matrice di Vandermonde, cosí definita: ν i,j = x j 1 i 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 lineare di n + 1 equazioni in n + 1 incognite V a = f. La matrice di vandermonde risulta non singolare in quanto detv = Π n i,j=0;j>i (x j x i ) 16

e i punti x i sono per ipotesi distinti, ne segue che il sistema lineare ha una ed una sola soluzione e quindi il polinomio p(x) esiste ed é unico. Esaminiamo una costruzione diretta, ma in generale meno conveniente, che consiste nella risoluzione 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: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 pval = z.*pval + a(k); end % Script File: Show_pol_interp 17

% 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 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 0 2 4 6 Osservazione Solo raramenmte del polinomio di interpolazione sono richiesti i coefficienti, in generale si vuole il valore di p(x) in uno o piú punti, e per calcolarlo non é conveniente risolvere il sistema lineare, perché ció richiederebbe un numero di operazioni dell ordine di n 3 /3 operazioni moltiplicative, inoltre la matrice di Vandermonde puó essere mal condizionata e quindi il calcolo di p(x) sarebbe numericamente instabile. Il polinomio di interpolazione pur essendo unico puó essere rappresentato in diverse forme piú 18

convenienti sia dal punto di vista del costo computazionale che della stabilitá. Interpolante in Base di Bernstein Consideriamo n + 1 dati (x i, y i ) con ascisse distinte in [a, b] x 0 < x 1 <... < x n 1 < xn Sappiamo che esiste ed è unico il polinomio p(x) di grado n che verifica la condizione di interpolazione p(x j ) = y j j = 0, 1,..., n Lo vogliamo determinare esprimendolo nella base di Bernstein ossia nella forma: p(x) = b 0 B 0,n (x) + b 1 B 1,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) = b 0 B 0,n (t) + b 1 B 1,n (t) +... + bnbn,n(t), t [0, 1] con t j = x j a b a, p(x j ) = p(t j ) = y j, 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 0 B = B @ B 0,n (t 0 ) B 1,n (t 0 )... Bn,n(t 0 ) B 0,n (t 1 ) B 1,n (t 1 )... Bn,n(t 1 ).... B 0,n (tn) B 1,n (tn)... Bn,n(tn) 0 1 0 1 b 0 b 1 C B C d = B @. bn C A, y = B @ y 0 y 1. yn C A 1 C A 19

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. Nella seguente tabella sono riportati gli indici di condizionamento delle matrici calcolate su punti equidistanti i nell intervallo di definizione mediante polinomi di Bernstein e base delle potenze. grado n Bernst. Potenze 3 2.27 1.41e02 4 4.52 9.04e02 5 9.65 3.78e03 6 21.6 2.5e04 7 49.98 1.3e05 8 118.38 8.10e05 9 285.34 5.08e06 10 697.14 3.04e07 20

Base di Lagrange Dati (n + 1) punti di interpolazione (x i, y i ), i = 0, 1,..., n con a = x 0 < x 1 <... < xn = b, il polinomio di interpolazione si scrive nella forma di Lagrange come segue: nx p(x) = y i L i,n (x), x [a, b] i=0 Le funzioni di Lagrange sono definite per i = 0, 1,..., n: L i,n (x) = x x 0 x i x 0... x x i 1 x i x i 1 x x i+1 x i x i+1... x x n x i xn = Π n x x j j i,j=0 x i x j Le funzioni di Lagrange L i,n (x) formano una base per lo spazio Pn dei polinomi di grado n {L 0,n (x), L 1,n (x),... Ln,n(x)} Per come sono definite valgono le seguenti proprietá L i,n (x j ) = δ ij = j 1 se j = i 0 se j i L i,n (x) é un polinomio di grado al piú n, con n zeri distinti: x 0, x 1,... x i 1, x i+1,... xn. Quindi determinare il polinomio p(x) che soddisfi le condizioni di interpolazione p(x i ) = y i, i, nella forma di Lagrange p(x) = a 0 L 0,n (x) + a 1 L 1,n (x) +... + anln,n(x) 21

imponendo le condizioni di interpolazione si ottiene il sistema lineare 0 B @ L 0,n (x 0 ) L 1,n (x 0 )... Ln,n(x 0 ) L 0,n (x 1 ) L 1,n (x 1 )... Ln,n(x 1 ).... L 0,n (xn) L 1,n (xn)... Ln,n(xn) 1 0 C A B @ a 0 a 1. an 1 C A = 0 B @ y 0 y 1. yn 1 C A Si osservi che la matrice L risulta uguale alla matrice identitá di ordine n + 1, I n+1. Quindi nell interpolazione secondo Lagrange non cerchiamo i coefficienti a i perché sono identicamente uguali ai valori noti y i. In questo caso cerchiamo proprio le funzioni base di Lagrange costruite sulle ascisse x i. L idea é di risolvere gli n + 1 problemi di interpolazione dove le ascisse x 0, x 1,..., xn sono quelle del problema iniziale in corrispondenza delle quali si hanno n + 1 insiemi di valori y i cosí fatti: {1, 0, 0,..., 0} unica soluzione L 0,n (x j ) {0, 1, 0,..., 0} unica soluzione L 1,n (x j ) {0, 0, 1,..., 0} unica soluzione L 2,n (x j ). {0, 0, 0,..., 1} unica soluzione Ln,n(x j ) La soluzione unica al problema iniziale si ottiene combinando assieme le n + 1 soluzioni parziali: nx p(x) = y i L i,n (x) i=0 é il polinomio unico di interpolazione e nx L i,n (x j ) = δ i,j p(x i ) = y i L i,n (x i ) = y i i=0 i. 22

2 polinomi di Lagrange 1.5 1 0.5 0 0.5 1 2 1 0 1 2 3 4 5 nodi in 0,1,2,3,4 Esempio Dati i punti x 0 = 0, x 1 = 1, x 2 = 3, le funzioni base di Lagrange ( anche dette funzioni cardinali) costruite su queste ascisse sono L 0,2 = x 1 0 1 x 3 0 3 = (x 1)(x 3) 3 = x2 4x + 3 3 L 1,2 = x 0 1 0 x 3 1 3 = x(x 3) 2 L 2,2 = x 0 3 0 x 1 3 1 = x(x 1) 6 23

1.2 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0 0.5 1 1.5 2 2.5 3 Il polinomio che interpola i tre punti (0, y 0 ), (1, y 1 ), (3, y 2 ) é allora p(x) = y 0 (x 1)(x 3) 3 y 1 x(x 3) 2 + y 2 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 grado 2. Se i punti (x i, y i ) fossero tutti su una retta, la combinazione lineare si ridurrebbe in modo che il polinomio p risultante abbia grado 1. Esempio Dati i punti (0, 0), (1, 1), (3, 3), le funzioni base di Lagrange sono: L 0,2 = (x 1)(x 3, 3 x(x 3) L 1,2 =, e 2 x(x 1) L 2,2 = 6 24

(x 1/x 3) x(x 3) x(x 1) p(x) = 0 + 3 = x. 3 2 6 Se si deve valutare il polinomio interpolatore espresso nella forma di Lagrange p(x) = P i y i L i,n (x) in un punto ˆx x i, i, lo si potrebbe trasformare nella forma monomiale p(x) = P i a i xi e poi applicare l algoritmo di Ruffini-Horner. Procedere in questo modo, vuole dire dover calcolare gli a i che richiedono oltre 6n 2 operazioni (, +) Un altro algoritmo potrebbe essere: Dati x, n, {x 0, x 1,..., xn}, {y 0, y 1,..., yn} p 0 for j=0,1,...,n... q 1... for i=0,1,...,n...if j i... q q ( x x i ) (x j x i )... end... p p + y j q end ma anche questo ha un costo di circa 4n 2 operazioni (, +). Per cui occorre cambiare strategia. Consideriamo ω(x) = (x x 0 )(x x 1 )... (x x n 1 )(x xn) = Π n k=0 (x x k ) Quindi possiamo scrivere nx nx z p(x) = y i L i,n (x) = ω(x) i x x i=0 i=0 i con z i = y i Π n j i,j=0 (x i x j ) 25

Infatti ove abbiamo posto nx nx y i L i,n (x) = y i Π n x x j j i,j=0 = x i=0 i=0 i x j nx = i=0 nx = i=0 nx = i=0 nx = i=0 nx = ω(x) i=0 z i = y i Π n j i,j=0 (x x j ) Π n j i,j=0 (x i x j ) y i ω(x)/(x x i ) Π n j i,j=0 (x i x j ) = y i Π n j i,j=0 (x i x j ) ω(x) x x i z i ω(x) x x i z i x x i y i Π n j i,j=0 (x i x j ) Quindi per calcolare nx nx p( x) = y i L i,n ( x) = ω( x) i=0 i=0 z i x x i Le operazioni richieste sono, a meno di termini di ordine inferiore, n sottrazioni per calcolare ( x x i ), per i = 0, 1,..., n n 2 /2 sottrazioni per x j x i, per i = 0, 1,..., n, e j = 0, 1,..., n, n 2 prodotti per calcolare z i, per i = 0, 1,..., n; n somme e 2n prodotti per calcolare p( x). 26

In totale questo calcolo richiede n 2 /2 addizioni ed n 2 prodotti. Per calcolare il valore dello stesso polinomio p in un altro punto ˆx conviene sempre usare questa forma perché gli scalari z i dipendono solo da x i e possono essere calcolati una volta per tutte. Quindi il calcolo in un altro punto ˆx richiede solo il passo finale cioé n somme e 2n prodotti. Infine lasciando inalterati gli x i e variando solo le ordinate y i si puó ancora calcolare p(x) con n somme e 2n prodotti aggiuntivi. Riepilogo Riepilogo I costi computazionali dell interpolazione con la forma di Lagrange sono i seguenti: Calcolo in un punto: n 2 /2 somme ed n 2 prodotti Calcolo in m punti: n 2 /2 + 2nm somme ed n 2 + 2mn prodotti. In MATLAB ŷ = 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 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); 27

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 Newton 1 punto n 2 /2(+) + n 2 ( ) n 2 (+) + n 2 /2( ) in m punti n 2 /2 + 2mn)(+)+ (n 2 + 2mn)(+)+ +(n 2 + 2mn)( ) +n 2 /2 + 2mn)( ) 28

Analisi dell errore di interpolazione Dati n+1 osservazioni f i di una funzione f(x) in corrispondenza di n+1 ascisse distinte abbiamo visto alcuni metodi per costruire il polinomio di grado minimo che interpola i punti (x i, f i ). In questo caso ha senso chiedersi che errore si commette in un punto ˆx nel considerare il valore di p(ˆx) al posto di f(ˆx), cioé quanto é grande l errore di interpolazione R(x) = f(x) p(x) che si commette in un punto ˆx [a, b], ˆx x i, i. Per dare una risposta é necessario porre alcune ipotesi di regolaritá sulla f. Teorema Sia f(x) C n+1 ossia f continua con tutte le sue derivate fino a quella di ordine n + 1. [a,b] Sia [a, b] un intervallo di R limitato e chiuso contenente le ascisse distinte x i. Sia ˆx [a, b] un punto qualsiasi, distinto dagli x i. Esiste allora un punto ξ ( dipendente da ˆx) interno ad [a, b] per cui: con R(ˆx) := f(ˆx) p(ˆx) = ω(ˆx) (n + 1)! fn+1 (ξ) ω(x) = (x x 0 )(x x 1 )... (x xn) = Π n k=0 (x x k ). Corollario Si indichi con M n+1 = max x [a,b] fn+1 (x) 29

allora un limite superiore ad R(x) = f(x) p(x) é dato da R(x) = ω(x) (n + 1)! M n+1. Esempio f(x) = e x, f C n+1, si ha: [a,b] M n+1 = max x [a,b] ex = e b Inoltre per ogni scelta delle ascisse x i [a, b] vale ω(x) = (x x 0 )(x x 1 )... (x x n 1 )(x xn) (b a)(b a)... (b a) = (b a) n+1 Pertanto max x [a,b] (b a) n+1 R(x) e b (n + 1)! ma in questo caso lim n x [a,b] max R(x) = n lim (b a) n+1 e b = 0 (n + 1)! quindi in altre parole lim p(x) f(x) = 0 n Il polinomio p di interpolazione converge uniformemente ad f su [a, b] quando il numero n di punti x i di interpolazione tende a. 30

Estrapolazione L espressione dell erroe R evidenzia come nel caso di estrapolazione ˆx / [a, b] := [min i x i, max x i ] i l errore R puó aumentare notevolmente, assieme a ω(ˆx). Errori nell interpolazione, limitazioni dell errore, convergenza e punti di Chebyshev Nella trattazione del problema di interpolazione sino ad ora abbiamo trattato le ordinate y i dei punti di interpolazione (x i, y i ) come numeri arbitrari. Assumiamo che soddisfino la relazione f(x i ) = y i dove f abbia tutte le derivate necessarie. Quindi si dice che il polinomio p(x) calcolato interpola la f in x 0, x 1,..., xn. Tale polinomio viene spesso costruito per trovare una approssimazione della f piú semplice da trattare é naturale considerare la seguente espressione dell errore: R(x) = f(x) p(x) in seguito assumiamo che la variabile x non assuma valori uguali a x 0, x 1,..., xn ( perché in questi punti l errore é zero). Aumentando il numero di punti di interpolazione aumenta in corrispondenza il grado del polinomio, al crescere quindi di n la successione {pn(ˆx)} puó non convergere ad f(ˆx) puó capitare anche nel caso in cui f C [a,b] Consideriamo la seguente funzione di Runge f(t) = 1/(1 + t 2 ) 31

se interpolata con punti equispaziati nell intervallo [ 5, 5] l interpolante diverge in corrispondenza degli estremi dell intervallo. Si puó dimostrare che al crescere di n la successione dei polinomi di interpolazione {p(n} costruiti sulle ascisse equidistanti: x i = i 10 n 5, i = 0, 1,..., n non converge alla funzione di Runge, perché gli errori diventano arbitrariamente grandi specialmente nei punti vicino agli estremi dell intervallo. Quindi imporre la regolaritá sulla f non é sufficiente a garantire la convergenza dell interpolazione. Se si considerano come ascisse di interpolazione gli n + 1 zeri del polinomio di Chebyshev di grado n rispettivamente: x i = cos( (2i+1)π ) [ 1, 1] i = 0, 1,..., n 2(n+1) oppure x i = a+b 2 b a 2 cos((2i+1)π ) [a, b] 2(n+1) i = 0, 1,..., n 1.2 1 j=4 j=5 0.8 j=3 j=6 0.6 j=2 j=7 0.4 0.2 j=1 j=8 0 0.2 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 zeri del polinomio di Chebyshev T 8 Con questa distribuzione delle ascisse x i si dimostra che, al crescere di n, il polinomio pn(x) di interpolazione converge a f(x) quando x [a, b]. 32

1 interpolazione funzione di Runge punti equidistanti 0.5 0 0.5 5 4 3 2 1 0 1 2 3 4 5 grado del polinomio 6 33

2 interpolazione funzione di Runge punti equidistanti 1.5 1 0.5 0 0.5 5 4 3 2 1 0 1 2 3 4 5 grado del polinomio 10 34

10 interpolazione funzione di Runge punti equidistanti 0 10 20 30 40 50 60 5 4 3 2 1 0 1 2 3 4 5 grado del polinomio 20 Questo comportamento é dovuto al polinomio ω(x) = (x x 0 )(x x 1 )... (x xn) che compare nell espressione dell errore che assume valori di picco agli estremi dell intervallo. L errore di interpolazione puó essere limitato se si scelgono i punti di interpolazione in modo che max x [a,b] ω(x) sia minimo. I punti di Chebyshev sono un tentativo di aggiustare i punti di interpolazione 35

1 interpolazione funzione di runge 0.5 0 0.5 5 4 3 2 1 0 1 2 3 4 5 grado del polinomio 6 Figure 2: polinomio di grado 6 interpolante nei punti di Chebyshev evidenziati 36

1 interpolazione funzione di runge 0.5 0 0.5 5 4 3 2 1 0 1 2 3 4 5 grado del polinomio 10 Figure 3: polinomio di grado 10 interpolante nei punti di Chebyshev evidenziati 37

1 interpolazione funzione di runge 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 5 4 3 2 1 0 1 2 3 4 5 grado del polinomio 20 Figure 4: polinomio di grado 20 interpolante nei punti di Chebyshev evidenziati Si puó dimostrare che min max ω(x) = (b a) n ω(x) x [a,b] e il minimo é raggiunto quando x i = a + b 2 b a 2 + 1)π cos((2i ) [a, b] i = 0, 1,..., n 2(n + 1) che sono i punti di Chebyshev. 38

4000 3000 grafico della funzione omega equi. chebychev 2000 1000 0 1000 2000 3000 4000 5 4 3 2 1 0 1 2 3 4 5 grado del polinomio 6 Figure 5: funzione ω per polinomi di grado 6 39

5 x 105 grafico della funzione omega 4 equi. chebychev 3 2 1 0 1 2 3 4 5 5 4 3 2 1 0 1 2 3 4 5 grado del polinomio 10 Figure 6: funzione ω per polinomi di grado 10 40

1.5 x 1011 grafico della funzione omega equi. chebychev 1 0.5 0 0.5 1 1.5 5 4 3 2 1 0 1 2 3 4 5 grado del polinomio 20 Figure 7: funzione ω per polinomi di grado 20 Sfortunatamente ci sono funzioni per cui l interpolante nei punti di Chebyshev non converge e occorre cambiare strategia. 41