Sei sulla pagina 1di 15

Esercitazione di Calcolo Numerico 1

13 Maggio 2009

1. Costruire il polinomio di secondo grado che approssima nel senso dei


minimi quadrati la seguente tabella di dati

xi -1/2 0 1/2 1
yi 0 1 0 -3

risolvendo il sistema lineare sovradeterminato risultante col metodo


delle equazioni normali, utilizzando lalgoritmo piu appropriato. Dire,
inoltre, se il polinomio determinato e interpolante e perche.

2. Esprimere il polinomio che interpola la seguente tabella di dati

xi -2 0 1 4
yi 1 3 2 -1

nella forma di Lagrange e calcolarne il valore nel punto x = 3.

3. Determinare la forma di Lagrange del polinomio che interpola sin(2x)


nei punti di ascissa 0, /4 e /2 e valutare in x = /4. Cosa si puo
dire, in questo particolare esempio, sullerrore di interpolazione?

4. Esprimere nelle forma di Lagrange il polinomio che interpola i due


punti di coordinate (x0 , y0 ) e (x1 , y1 ) e valutare la sua derivata prima
nel punto di ascissa x0 .

5. Esprimere nella forma di Lagrange e in forma canonica il polinomio che


interpola la seguente tabella di dati

xi -1 0 1 2
.
yi -2 -1 0 7

6 Costruire il polinomio di terzo grado che approssima nel senso dei


minimi quadrati la seguente tabella di dati

xi -2 -1 0 1 2
yi 6 9 6 3 6

1
risolvendo il sistema delle equazioni normali ad esso associato mediante
la fattorizzazione P A = LU . Dire, inoltre, se il polinomio determinato
e interpolante.
Soluzioni

Esercizio 1
Calcolare il polinomio di migliore approssimazione di una funzione f
2
L [a, b] nel senso dei minimi quadrati consiste nel determinare il polinomio
pn di grado n che minimizzi la norma 2 dellerrore
Z b 1/2
2
min ||pn f ||2 = min [pn (x) f (x)] dx .
pn n pn n a

In questo esercizio ci viene data una tabella con alcuni valori discreti (xi )
e i corrispondenti valori della funzione (yi ) e pertanto siamo interessati al
problema di interpolazione nel senso dei minimi quadrati nel caso discreto.
Di conseguenza la norma due dellerrore che vogliamo minimizzare diventa
m
!1/2
X
||pn f ||2 = [pn (xi ) yi ]2 ,
i=0

dove {x0 , x1 , . . . , xm } sono le ascisse dei m + 1 punti per i quali sono noti
i valori {y1 , y2 , . . . , ym } della funzione f (x) (yi = f (xi )) e n e il grado del
polinomio che risolve il problema di minimo. Nel nostro caso m = 4 (vengono
dati 4 punti nella tabella) e n = 2 (dobbiamo cercare un polinomio di secondo
grado che approssimi i punti dati nel senso dei minimi quadrati).
Usando la base canonica ({1, x, x2 , . . . , xn }), si ha
n
X
pn (xi ) = aj xji = (Xa)i , i = 1, 2, . . . , m,
j=0

dove a = (a0 , . . . , an )T Rn+1 e il vettore dei coefficienti del polinomio e X


e la matrice di Vandermonde ((m + 1) (n + 1))

1 x0 x20 . . . xn0
1 x1 x2 . . . x n
1 1
.. .

.. .. ..
. . . .
1 xm xm . . . xnm
2

2
Di conseguenza dobbiamo trovare i coefficienti a tale che minimizzino la
seguente quantita
m
X
||pn f ||2 = [(Xa)i yi ]2 = ||Xa y||22 .
i=0

Il minimo se esiste e soluzione del seguente sistema sovradeterminato (m > n)


Xa = y; infatti nel nostro caso e un sistema di 5 equazioni con 3 incognite e
quindi non ha una unica soluzione. Dai paragrafi 4.7 e 4.7.1 del libro di testo,
si ha che per risolvere il problema ai minimi quadrati dato, si puo cercare
il sistema normale associato (metodo delle equazioni normali) che si ottiene
imponendo che il gradiente del quadrato dellerrore sia zero (condizione si
stazionarieta). Dopo alcuni passaggi si trova che il sistema normale e dato
da
X T Xa = X T y, (1)
dove, come gia detto, X e la matrice di Vandermonde che si costruisce a
partire dalle xi date nella tabella di dati, a e il vettore dei coefficienti del
polinomio approssimante (pn (x) = a0 + a1 x + a2 x2 + . . . an xn ) e y e il vettore
che contiene le yi date nella tabella di dati:

1 1/2 1/4 0
1 a0
0 0 , a = a1 , y = 1 .

X= 1 1/2 1/4 0
a2
1 1 1 3

Si ha

1 1/2 1/4
0
1 1 1 1 a0 1 1 1 1
1/2 0 1/2 1 1 0 0 = 1/2 0 1/2 1 1

1 1/2 1/4 a1
,
0
1/4 0 1/4 1 a2 1/4 0 1/4 1
1 1 1 3

4 1 3/2 a0 2
1 3/2 1 a1 = 3 .
3/2 1 9/8 a2 3
Adesso occorre risolvere il sistema lineare ottenuto. Lesercizio chiede di
risolverlo usando lalgoritmo piu appropriato. Nel nostro caso dobbiamo

3
quindi usare lalgoritmo di Gauss con pivoting di colonna (vedere il paragrafo
4.3.1). Si ha
4 1 3/2 2
1 3/2 1 3 ,
3/2 1 9/8 3
applicando il pivoting di colonna, non devo scambiare alcuna riga e quindi
procedo come al solito:

4 1 3/2 2
1/4 1 3/2 1 3 ,
3/8 3/2 1 9/8 3


4 1 3/2 2
0 3/2 1/4 1 (1/4)(3/2) 3 (1/4)(2) =
0 1 3/8 9/8 (3/8)(3/2) 3 (3/8)(2)

4 1 3/2 2
0 5/4 5/8 5/2 ;
0 5/8 9/16 9/4
non devo fare alcuno scambio di righe visto che 5/4 > 5/8:

4 1 3/2 2
0 5/4 5/8 5/2 ,
5/8(4/5) = 1/2 0 0 9/16 (1/2)(5/8) 9/4 (1/2)(5/2)


4 1 3/2 2
0 5/4 5/8 5/2 ;
0 0 1/4 1
pertanto la soluzione e:

a2 = 4
a1 = 4/5[5/2 5/8(4)] = 0 .
a0 = 1/4[2 1(0) (3/2)(4)] = 1

Di conseguenza il polinomio approssimante trovato e p2 (x) = 14x2 . Per ca-


pire se il polinomio ottenuto e quello interpolante, applichiamo la definizione.
Se p2 (x) e interpolante allora si deve avere:
p2 (xi ) = yi , i = 0, 1, 2, 3, (2)

4
con xi e yi dati dalla tabella iniziale. Si vede facilmente che per il polinomio
di secondo grado ottenuto, la (2) e soddisfatta e pertanto p2 (x) e il polinomio
interpolante.
Esercizio 2
Dal paragrafo 8.2 e 8.2.1 del libro si trova che una base piu comoda dal
punto di vista numerico per rappresentare un polinomio interpolante e quella
di Lagrange. Assegnati i dati (xi , yi ) con i = 0, 1, . . . , n (che nel nostro caso
sono dati dalla tabella), i polinomi caratteristici di Lagrange {Lj (x)}nj=0 sono
dati da
n
Y x xk (x x0 ) . . . (x xj1 )(x xj+1 ) . . . (x xn )
Lj (x) = = ,
k=0
xj xk (xj x0 ) . . . (xj xj1 )(xj xj+1 ) . . . (xj xn )
k6=j

e Lj (xi ) = ij . I dati che abbiamo sono


xi -2 0 1 4
yi 1 3 2 -1
e pertanto il polinomio interpolante sara di grado tre:

p3 (x) = a0 L0 (x) + a1 L1 (x) + a2 L2 (x) + a3 L3 (x) = al Ll (x),

e sappiamo che per definizione di polinomio interpolante si deve avere pn (xi ) =


yi e pertanto
y0 = p3 (x0 ) = al Ll (x0 ) = al 0l = a0 ,
e cos per gli altri indici: yj = p3 (xj ) = al Ll (xj ) = al jl = aj . Di conseguenza
il polinomio interpolante con la base di Lagrange avra la seguente forma:

p3 (x) = 1L0 (x) + 3L1 (x) + 2L2 (x) L3 (x) .

per calcolare L0 (x), L1 (x), L2 (x) e L3 (x), si ricorre alla espressione dei
polinomi di Lagrange tendendo presente che n = 3:
3
Y x xk (x x1 )(x x2 )(x x3 )
L0 (x) = = =
x 0 xk (x 0 x1 )(x0 x2 )(x0 x3 )
k=0
k6=0

1
x(x 1)(x 4) .
36
5
3
Y x xk (x x0 )(x x2 )(x x3 )
L1 (x) = = =
x 1 xk (x 1 x0 )(x1 x2 )(x1 x3 )
k=0
k6=1

1
(x + 2)(x 1)(x 4) .
8
3
Y x xk (x x0 )(x x1 )(x x3 )
L2 (x) = = =
x 2 xk (x 2 x0 )(x2 x1 )(x2 x3 )
k=0
k6=2

1
(x + 2)x(x 4) .
9
3
Y x xk (x x0 )(x x1 )(x x2 )
L3 (x) = = =
x 3 xk (x 3 x0 )(x3 x1 )(x3 x2 )
k=0
k6=3

1
(x + 2)x(x 1) .
72
Di conseguenza il polinomio interpolante cercato e:
1 3 2 1
p3 (x) = x(x1)(x4) (x+2)(x1)(x4) (x+2)x(x4) (x+2)x(x1) .
36 8 9 72
Valutando il polinomio interpolante p3 (x) nel punto x = 3, si ottiene:
41
p3 (x = 3) = .
6
Esercizio 3

In questo esercizio dobbiamo trovare il polinomio interpolante di Lagrange


rispetto ai seguenti dati:

xi 0 4 2
yi 0 1 0

dove y0 = sin(2 0) = 0, y1 = sin(2x1 ) = sin(/2) = 1 e y2 = sin(2x2 ) =


sin() = 0. Avendo tre punti, il polinomio interpolante sara di secondo
grado:

p2 (x) = al Ll (x) = a0 L1 (x)+a1 L1 (x)+a2 L2 (x) = y0 L1 (x)+y1 L1 (x)+y2 L2 (x) = L1 (x).

6
Quindi si ha
3
Y x xk (x x0 )(x x2 ) 8  
p2 (x) = L1 (x) = = = 2x x .
x 1 xk (x 1 x0 )(x1 x2 ) 2
k=0
k6=1

Valutando il polinomio trovato in x = /4 si ha


   
8    4 3
p2 = 2 = = 3,
4 4 4 2 4

mentre il valore della funzione (sin(2x)) nello stesso punto e


   
sin 2 = sin = 1.
4 2
Quindi lerrore di interpolazione nel punto dato (x = /4) vale
 
8  
En (x) = f (x) pn (x) = sin(2x) 2 x x = 1 (3) = 2.
2

Verifichiamo il valore En (x) trovato facendo uso del teorema 8.4 con n = 2
(visto che il polinomio approssimante e di secondo grado). Il teorema dice:

Sia f C n+1 [a, b] e sia pn il polinomio di grado n che interpola


f sulle ascisse {x0 , . . . , xn }, cioe

pn (xi ) = f (xi ), i = 0, . . . , n.

Allora per ogni x esiste un punto x appartenente al piu piccolo


intervallo che contiene i punti {x0 , . . . , xn } tale che la funzione
errore definita da

En (x) = f (x) pn (x)

si possa esprimere nella forma

f n+1 (x )
En (x) = n (x), (3)
(n + 1)!

dove n (x) = (x x0 )(x x1 ) . . . (x xn ).

7
La funzione da approssimare e sin(2x) che e di classe C e pertanto e con-
tinua e la sua derivata esiste ed e continua infinite volte, quindi posso tran-
quillamente applicare il teorema. I punti di interpolazione sono {0, /4, /2}
che sono equidistanti e pertanto x potra stare sia in (0, /4) o in (/4, /2).
Usando la (3) con n = 2 si ha che dobbiamo calcolare f 3 (x):

d3
f (x) = 3 sin(2x) = 23 cos(2x),
3
dx
quindi lerrore sara
f 3 (x ) 1 3
  
E2 (x) = 3 (x) = [2 cos(2x )](x 0) x x
(3)! 6 4 2
4    4   
= cos(2x )x x x 6 x x x ,
3 4 2 3 4 2
visto che cos(2x ) < 1 per x (0, /4) o x (/4, /2). Di conseguenza
  4       3
E2 6 = ' 3.88
4 3 4 4 4 4 2 8
che e superiore a 2 (il valore dellerrore E2 (/4) precedentemente trovato).
In questo caso si puo anche calcolare lesatto valore si x :
3
2= cos(2x ),
8
16
cos(2x ) = ,
3
e si trova che x vale circa 0.5143 valore poco inferiore a /6, e quindi si trova
in (0, /4) come ci dobbiamo aspettare.
In generale per la funzione data in questo esercizio e sempre possibile
maggiorare lerrore di interpolazione in x = /4:
4
En (x) 6 n (x).
3
Esercizio 4

Dagli esercizi precedenti sappiamo che il polinomio cercato ha la forma:

p1 (x) = yj Lj (x) = y0 L0 (x) + y1 L1 (x) .

8
per calcolare L0 (x) e L1 (x) si ricorre alla espressione dei polinomi di Lagrange
tendendo presente che n = 1 perche dobbiamo interpolare due punti e per
due punti passa una e una sola retta (che sara il polinomio interpolante che
cerchiamo nella base di Lagrange)1 :
1
Y x xk x x1
L0 (x) = =
k=0
x0 xk x 0 x1
k6=0

1
Y x xk x x0
L1 (x) = = .
x 0 xk x 1 x0
k=0
k6=1

Quindi:
x x1 x x0
p1 (x) = y0 + y1 ,
x0 x1 x1 x0
e
y0 y1
p01 (x1 ) = .
x0 x1
Esercizio 5

La tabella di dati da interpolare in questo esercizio e data da


xi -1 0 1 2
.
yi -2 -1 0 7
per il calcolo del polinomio interpolante di Lagrange si ragiona esattamente
come negli esercizi precedenti:

p3 (x) = y0 L0 (x) + y1 L1 (x) + y2 L2 (x) + y3 L3 (x) =

2L0 (x) L1 (x) + 7L3 (x) ,


dove:
1
L0 (x) = x(x 1)(x 2) ,
6
1
L1 (x) = (x2 1)(x 2) ,
2
1
Infatti il polinomio interpolante quando esiste e unico e se cercassi una polinomio
approssimante di grado superiore a due avendo solo due punti, perderei lunicita, visto che
per due punti nel piano passano infinite parabole, cubiche, ect..

9
1
L3 (x) = x(x2 1) .
6
Facendo i conti si trova che p3 (x) = x3 1.
per quanto riguarda il calcolo del polinomio interpolante usando la base
canonica, si cerca un polinomio della forma

p3 (x) = aj xj = a0 + a1 x + a2 x2 + a3 x3

tale che il suo valore nei punti xi sia uguale alle corrispondenti yi :

p3 (xi ) = yi .

Quindi per trovare i coefficienti aj occorre risolvere il sistema la cui matri-


ce dei coefficienti e data dalla matrice di Vandermonde. Si ha il seguente
sistema:
1 1 1 1 a0 2
1 0 0 0 a1 1
1 1 1 1 a2 = 0

1 2 4 8 a3 7
Risolvendo il sistema con Gauss+pivoting di colonna si ha:

1 1 1 1 2
1 0 0 0 1
1 1 1 1 0 ,

1 2 4 8 7

non devo alcun scambio di righe e quindi procedo con lalgoritmo:



1 1 1 1 2
1 0 0 0 1
1
1 1 1 1 1 0
1 1 2 4 8 7



1 1 1 1 2
0 0 1(1) 0 1 0 1(1) 1 1(2)
=
0 1 1(1) 1 1 1 1(1) 0 1(2)
0 2 1(1) 4 1 8 1(1) 7 1(2)

10

1 1 1 1 2
0 1 1 1 1
;
0 2 0 2 2
0 3 3 9 9
Applicando il pivoting di colonna, scambio la seconda riga con la quarta

1 1 1 1 2
0 3 3 9 9 ;


0 2 0 2 2
0 1 1 1 1
e poi si procede come al solito:

1 1 1 1 2
0 3 3 9 9


2/3 0 2 0 2 2
1/3 0 1 1 1 1


1 1 1 1 2
0 3 3 9 9
=
0 0 0 (2/3)(3) 2 (2/3)(9) 2 (2/3)(9)
0 0 1 (1/3)3 1 (1/3)(9) 1 (1/3)(9)

1 1 1 1 2
0 3 3 9 9

;
0 0 2 4 4
0 0 2 2 2
ora non e necessario effettuare alcun scambio di righe, quindi si ha:

1 1 1 1 2
0 3 3 9
9


0 0 2 4 4
1 0 0 2 2 2


1 1 1 1 2
0 3 3 9 9
=
0 0 2 4 4
0 0 0 2 + 4 2 + 4

11

1 1 1 1 2
0 3 3 9 9

.
0 0 2 4 4
0 0 0 2 2
Applicando lalgoritmo di sostituzione allindietro, si trova il seguente risul-
tato:


a3 = 1
a2 = 1/2[4 (4)(1)] = 0

.

a1 = 1/3[9 3(0) 9(1)] = 0
a0 = 1[2 (1)0 1(0) (1)(1)] = 2 + 1 = 1

e quindi p3 (x) = x3 1.
Si noti che per il teorema 8.3 (il polinomio interpolante esiste ed e unico
se e solo se xi 6= xj per i 6= j) il polinomio scritto con la base canonica
coincide con quello scritto con la base di Lagrange.
Esercizio 6
xi -2 -1 0 1 2
yi 6 9 6 3 6
Per costruire il polinomio (in questo caso di terzo grado p3 (x) = a0 +
a1 x+a2 x2 +a3 x3 ) che approssima nel senso dei minimi quadrati i dati esposti
in tabella, si dimostra che si deve risolvere il sistema di equazioni normali
seguente:
X T Xa = X T y ,
dove X e la matrice di Vandermonde associata alle xi della tabella di dati,
X T la sua trasposta, y e il vettore che contiene le yi della tabella e a e il
vettore soluzione che contiene i coefficienti del polinomio da determinare.
Si trova che:
1 2 4 8
1 1 1 1

X= 1 0 0 0 ,

1 1 1 1
1 2 4 8

5 0 10 0 30
e X T y = 6 .
0 10 0 34
XT X = 10 0 34 0 60
0 34 0 130 6

12
Ora occorre risolvere il sistema normale trovato con la fattorizzazione P A =
LU . Si ha:

5 0 10 0
0 10 0 34
10 0 34 0 ,

0 34 0 130
devo scambiare la prima riga con la terza:

10 0 34 0
0 0
10 0 34
1/2 5 0 10 0
0 0 34 0 130



10 0 34 0 10 0 34 0
0 10 0 00 34 0 0 10 0 34

0 0 0 10 (1/2)(34) 0 0 = 0 0 7 0
;

0 34 0 00 130 0 0 34 0 130
ora devo scambiare la seconda riga con la quarta e procedere con lalgoritmo:

10 0 34 0
0 34 0 130

0 0 0 7 0
10/34 = 5/17 0 10 0 34



10 0 34 0 10 0 34 0
0 34 0 130 0 34 0 130
= ;
0 0 0 7 0 00 0 0 7 0
0 10 10 0 0 34 (5/17)130 0 0 0 72/17
la matrice e gia triangolarizzata, infatti anche procedendo con lalgoritmo si
ha:
10 0 34 0
0 34 0 130

0 0 7 0
0 0 0 0 72/17

13


10 0 34 0 10 0 34 0
0 34 0 130 0 34 0 130
= .
0 0 7 0 0 0 7 0
0 0 0 72/17 0 0 0 0 72/17
La matrice di permutazione P e data da:

1 0 0 0 0 0 1 0 0 0 1 0
0 0 0 1 0 1 0 0 0 0 0 1
P = P2 P1 = 0 0 1
= ,
0 1 0 0 0 1 0 0 0
0 1 0 0 0 0 0 1 0 1 0 0
mentre,

1 0 0 0 10 0 34 0
0 1 0 0 0 34 0 130
L=
1/2
, U =
0 0 7
.
0 1 0 0
0 5/17 0 1 0 0 0 72/17
Ora occorre risolvere la coppia di sistemi triangolari

Ly = P b
,
Ua = y
con b = (30, 6, 60, 6)T . Il sistema triangolare inferiore da risolvere e:

1 0 0 0 y1 0 0 1 0 30 60
y2 = 0 0 0 1 6 = 6 ,
0 1 0 0

1/2 0 1 0 y3 1 0 0 0 60 30
0 5/17 0 1 y4 0 1 0 0 6 6
la cui soluzione e:


y1 = 60
y2 = 6

,

y 3 = 30 1/2(60) = 0
y4 = 6 (5/17)(6) = 72/17

e il triangolare superiore diventa:



10 0 34 0 a0 60
0 34 0 130 a1 6
a2 =
,
0 0 7 0 0
0 0 0 72/17 a3 72/17

14
con soluzione

a3 =1
a2 =0

.

a1 = 1/34[6 130(1)] = 4
a0 = 1/10[60 34(0)] = 6

Quindi il polinomio di terzo grado che approssima nel senso dei minimi
quadrati i dati esposti in tabella e:

p3 (x) = 6 4x + x3

Il polinomio ottenuto e interpolante se

p3 (xi ) = yi , i = 0, 1, 2, 3, 4, (4)

con xi e yi dati dalla tabella di dati. Si vede facilmente che la (4) e soddifatta
e pertanto p3 (x) e il polinomio interpolante2 .

2
Per lunicita del polinomio interpolante, se provate a calcolarlo usando la tabella di dati
rispetto alla base canonica o alla base di Lagrange, otterrete sempre p3 (x) = 6 4x + x3 .

15