A.A. 2015/2016
f (x) dx
a
b
a
f(x) dx
n
X
ak x k
k=0
f (x) tn (x) = a0 +
[ak cos(kx) + bk sin(kx)]
k=1
k=0
funzione
interpolante
1
0.5
0.5
1.5
4.5
3.5
2.5
1.5
0.5
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
ove
|| ||
denota una qualsiasi norma di funzione. Quando ci`
o si verifica, si
dice che fn converge in norma a f ; nel caso della norma infinito si
dice che fn converge uniformemente a f .
1/x
Tf
1.8
(x)
10,1
1.6
1.4
1.2
0.8
0.6
0.4
0.2
1.2
1.4
1.6
1.8
2.2
2.4
2.6
2.8
2.5
x 10
ex
Tf (x)
4,0
Tf8,0(x)
Tf (x)
12,0
Tf (x)
16,0
1.5
0.5
10
Interpolazione polinomiale
Consideriamo n + 1 dati (xi , yi ), i = 1, . . . , n + 1 (con yi = f (xi )
eventualmente). Il criterio dellinterpolazione consiste nello
scegliere come approssimante, la funzione (possibilmente unica)
f = fn soddisfacente le seguenti condizioni:
fn (xi ) = yi
i = 1, . . . , n + 1
i = 1, . . . , n + 1.
il sistema lineare
. . . x1
1
. . . x2
1
..
..
..
.
.
.
n
xn+1
. . . xn+1 1
c1
c2
..
.
cn+1
i = 1, . . . , n + 1
y1
y2
..
.
yn+1
Vc = y
Poiche
det(V ) =
Y
(xi xj )
i >j
! c = (c1 , . . . , cn+1
)T : Vc = y .
Il polinomio pn i cui coefficienti sono soluzione del sistema Vc = y
`e denominato polinomio interpolante i dati (xi , yi ) oppure, se
yi = f (xi ), interpolante la funzione f nei punti xi . I punti xi
sono detti nodi di interpolazione.
Comandi MATLAB
c = polyfit(x,y,n) calcola e memorizza in c, i coefficienti del
polinomio interpolante i punti (xi , yi ), i = 1, . . . , n + 1,
definiti in x e in y , rispettivamente;
p = polyval(c,z) calcola e memorizza in p, i valori che il
polinomio, con coefficienti definiti in c, assume nei punti di z.
ESEMPIO
Calcoliamo e rappresentiamo graficamente il polinomio
interpolante i dati (0, 1), (1, 1), (2, 1), (1/2, 2):
3
x = [0 1 2 1/2];
y = [1 -1 1 2];
c = polyfit(x,y,length(x)-1);
z = linspace(min(x),max(x));
p = polyval(c,z);
plot(x,y,ro,z,p,b)
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
ESEMPIO
Calcoliamo i coefficienti del polinomio interpolante la funzione
f (x) = 1/(1 + x 2 ) in 13 punti equispaziati nellintervallo [0, 1].
x = linspace(0,1,13);
f = inline(1./(1+x.^2));
y = f(x);
c = polyfit(x,y,length(x)-1);
Warning: Polynomial is badly conditioned.....
A causa del noto cattivo condizionamento di un sistema lineare con
matrice dei coefficienti di Vandermonde e del costo della sua
risoluzione in termini di operazioni aritmetiche, per leffettiva
costruzione di un polinomio interpolante si utilizzano
rappresentazioni alternative.
I polinomi di grado n
lj (x) =
1i n+1,i 6=j
(x xi )
(xj xi )
n+1
X
yj lj (x)
j=1
n+1
X
j=1
yj lj (xi ) =
n+1
X
yj ij = yi .
j=1
ESEMPIO
Scriviamo la rappresentazione di Lagrange del polinomio p3 (x)
interpolante i punti (0, 1), (1, 1), (2, 1), (1/2, 2). Definiamo
dapprima i polinomi lj (x), j = 1, 2, 3, 4:
l1 (x) =
l2 (x) =
l3 (x) =
l4 (x) =
(x1)(x2)(x1/2)
(01)(02)(01/2)
(x0)(x2)(x1/2)
(10)(12)(11/2)
(x0)(x1)(x1/2)
(20)(21)(21/2)
(x0)(x1)(x2)
(1/20)(1/21)(1/22)
1.5
0.5
0.5
l1
l
2
l
3
l4
1.5
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
f [x2 , x3 ] f [x1 , x2 ]
x3 x1
differenza divisa di ordine 2, e pi`
u in generale
f [x1 , x2 , x3 ] =
f [x1 , x2 , . . . , xn+1 ] =
il polinomio
p1 (x) = f (x1 ) +f [x1 , x2 ](x x1 )
| {z }
p0 (x)
i =2
i =3
x1 f (x1 )
x2 f (x2 )
x3 f (x3 )
x4 f (x4 )
&
f [x1 , x2 ]
&
f [x2 , x3 ]
&
f [x3 , x4 ]
&
f [x1 , x2 , x3 ]
&
f [x2 , x3 , x4 ]
&
f [x1 , x2 , x3 , x4 ]
ESEMPIO
Scriviamo la rappresentazione di Newton del polinomio p3 (x)
interpolante i punti (0, 1), (1, 1), (2, 1), (1/2, 2). Calcoliamo le
differenze divise:
i =2
i =1
0
1
2
1/2
i =3
1
1
1
2
&
&
&
11
10
= 2
1(1)
21
21
1/22
=2
23
&
&
2(2)
20
=2
2/32
1/21
16
3
&
16/32
1/20
Si ha allora
p3 (x) = 1 2(x 0) + 2(x 0)(x 1) +
20
(x 0)(x 1)(x 2)
3
20
3
0.5
0.5
punti di interpolazione
funzione di Runge
polinomio interpolante p9
polinomio interpolante p13
1.5
5
punti di interpolazione
funzione di Runge
polinomio interpolante p9
polinomio interpolante p13
0.5
0.45
0.4
0.35
0.3
0.25
0.2
0.15
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
punti
Runge
p9
p13
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
5
0.8
0.7
d=2
0.6
0.5
0.4
d=1
0.3
0.2
0.1
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
punti
Runge
p12
0.9
0.8
spline
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
5
(k)
(2)
(3)
(3)
(3)
(1)
h 0, p = 0, 1, 2, 3.
Comandi MATLAB
s = spline(x,y,z) calcola e memorizza in s i valori che la
spline cubica interpolante i dati (xi , yi ), i = 1, . . . , n, definiti
in x e in y rispettivamente, e soddisfacente la condizione
not-a-knot 2), assume in z;
s = spline(x,[yd1 y ydn],z) calcola e memorizza in s i
valori che la spline cubica interpolante i dati (xi , yi ),
i = 1, . . . , n, definiti in x e in y rispettivamente, e
soddisfacente la condizione 3) (yd1= f 0 (x1 ), ydn= f 0 (xn )),
assume in z.
i =1
k=1
risulti minimo.
0.9
(x ,y )
i
0.8
0.7
(xi,p3(xi))
0.6
0.5
0.4
0.3
0.2
0.1
0.1
0.1
Pn
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
ESEMPIO
Supponiamo di avere a disposizione un programma per il calcolo
dei coefficienti del polinomio di grado n che interpola o meglio
approssima un insieme di m dati secondo il criterio dei minimi
quadrati (per esempio, polyfit), e di voler calcolare i coefficienti
della somma esponenziale
f(x) = c1 e nx + c2 e (n1)x + ... + cn+1 =
n+1
X
ck e (n+1k)x
k=1
n+1
X
ck t n+1k =: pn (t)
k=1