Calcolo numerico/Interpolazione polinomiale

Da testwiki.
Vai alla navigazione Vai alla ricerca

Template:Calcolo numerico

Introduzione del problema

Consideriamo n+1 coppie di dati, (xi,yi)i=0n, e fissiamo un modello di approssimazione. Abbiamo un set di funzioni ϕj(x) per j=1,…,n, che siano linearmente indipendenti.

Consideriamo la combinazione lineare

∑j=0nαjϕj(x)

che restituisce 0 se e solo se αj=0∀j.

Problema: dobbiamo determinare la funzione ϕ=∑j=0nαjϕj(x), tale che ϕ(xi)=yi∀i=0,…,n.

Si può anche avere già f continua tale che f(xi)=yi∀i, ma può essere conveniente approssimarla con polinomi.

Teorema 5.1 (teorema di Iston-Weierstrass)

Data una funzione f continua su [a,b], allora per ogni ε>0 esiste n=n(ε) e un polinomio pn tale che

|f−pn|=maxx∈[a,b]|f(x)−pn(x)|≤ε

Quindi, data una funzione continua, è una buona idea quella di usare polinomi per approssimarla.

Esistenza e unicità dell'interpolazione

Nella pratica, consideriamo (xi,yi)i=0n e consideriamo pn tale che pn(xi)=yi per i=0,…,n (polinomio interpolante).

Teorema 5.2 (teorema di esistenza e unicità)

Dati (xi,yi)i=1n nodi a due a due disgiunti, allora esiste ed è unico il polinomio pn(x) al più di grado n tale che pn(xi)=yi∀i.

Dimostrazione (dimostrazione teorica)

Scriviamo

pn(x)=a0+a1x+a2x2+…+anxn

e imponiamo le n+1 condizioni di interpolazione:

pn(xi)=∑j=1naj(xi)j=yi∀i=1,…n

e abbiamo n+1 equazioni in n+1 incognite, equivalenti al sistema:

B𝒂=𝒚

dove 𝒂=(a0,…,an)t, 𝒚=(y0,…,yn), e B=B(x0,…,xn) è una matrice con la seguente struttura:

1x0x02…x0n1x2x22…x2n……………1xnxn2…xnn

e una matrice di questo tipo è detta di Vandermonde.

Si dimostra che

det⁡B(x0,x1,…,xn)=∏i>j,i,j=0n(xi−xj)formula ∗

e siccome i nodi sono a due a due distinti per ipotesi, il determinante è diverso da 0, ovvero esiste ed è unico il polinomio interpolante perché il sistema si può risolvere e tutti i coefficienti sono determinati.

Dimostrazione (dimostrazione della formula ∗)

Consideriamo la matrice di Vandermonde in cui al nodo x0 sostituisco la generica variabile z, quindi

B(z,x1,x2,…,xn)=1zz2…zn1x1x12…x1n……………1xnxn2…xnn

Allora

det⁡B(z,x1,…,xn)

è un polinomio nella variabile z di grado n per la formula di Laplace. Inoltre questo polinomio si annulla in x1,x2,…,xn perché se a z sostituisco xi, trovo una matrice con due righe uguali che ha determinante nullo. Allora si avrà:

pn(z)=det⁡B(z,x1,…,xn)=(z−x1)(z−x2)∗…∗(z−xn)∗k(x1,…,xn)

Valuto pn in 0.

pn(0)=(−1)n∗k∗∏i=0nxi,relazione ∘

Inoltre per definizione:

pn(0)=det⁡B(0,x1,…,xn)=det⁡B(2:n,2:n)

e sappiamo che

B(2:n,2:n)=diag(x1,…,xn)∗1x1…x1n−11x2…x2n−1…………1xn…xnn−1

quindi

pn(0)=det⁡B(x1,…,xn)∗∏i=0nxiformula ∘∘

ed eguagliando le due espressioni di pn(0):

(−1)n∗k(x1,…,xn)∗∏i=0nxi=det⁡B(x1,xn)∗∏i=0nxi

quindi per k ricavo l'espressione:

k=(−1)ndet⁡B(x1,…,xn)

Ipotesi induttiva: det⁡B(x1,…,xn)=∏i>j,i,j=1n(xi−xj) Allora

det⁡B(x0,x1,…,xn)=∏j=1n(x0−xj)∗k

=(−1)n(x1−x0)∗(x2−x0)∗…∗(xn−x0)∗det⁡B(x1,…,xn))∗(−1)n

=(x1−x0)∗(x2−x0)∗…∗(xn−x0)∗∏j<i,j=1n(xj−xi)

e abbiamo dimostrato la formula ∗.

Nota: spesso la matrice di Vandermonde è mal condizionata, quindi nella pratica non si usa questo procedimento per ottenere i polinomi interpolanti.

Dimostrazione (dimostrazione costruttiva)

L'obiettivo è, come prima, quello di cercare un polinomio tale che pn(xi)=yi,∀i=0,…,n (condizione di interpolazione).

Premettiamo che i polinomi interpolanti sono unici, infatti, supponiamo per assurdo che esistano due polinomi pn,p¯n di grado n interpolanti, cioè che hanno come radici gli xi, allora consideriamo qn=pn−p¯n, di grado n, che ha n+1 zeri. Infatti qn(xi)=pn(xi)−p¯n(xi)=yi−yi=0 allora qn è identicamente nullo e quindi pn(x)=qn(x).

Consideriamo una combinazione lineare di un opportuno set di funzioni (polinomi di Lagrange):

pn(x)=∑i=0nαiϕi(x)

dove αi=yi (sono le ordinate degli xi) e ϕi=li(x) con λi(x) polinomio di Lagrange.

li(x)=∏j≠i,j=0nx−xjxi−xj

Valutando li(x) in un qualsiasi nodo xk, segue che

  1. se xk=xi, tutti i numeratori sono uguali ai denominatori e si ottiene li(x)=1
  2. se invece xk≠xi, segue che xk=x¯j, quindi un numeratore si annulla, e li(xk)=0.

In forma sintetica li(xk)=δik.

Calcoliamo pn in xj:

pn(xj)=∑i=0nyili(xj)=∑i=0nyiδij=yj

e abbiamo verificato la condizione di interpolazione per ogni j=0,…,n.

Template:Avanzamento