Chimica Industriale
1
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) = a0 + a1 x + a2 x2 + . . . an xn =
n
X
ai xi
i=0
dove n é un intero non negativo e a0 , a1 , . . . an sono numeri reali fissati, é detto
Polinomio;
• 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) é 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á
• 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,
• data una qualunque funzione continua su un intervallo [a, b], esiste un polinomio che
la approssima uniformemente qualunque sia l’² prefissato: |f (x)−p(x)| < ² ∀x ∈ [a, b]
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 )m1 · (x − α2 )m2 · (x − α3 )m3 . . . (x − αk )mk
2011/01/12
2
dove αi , i = 1, . . . k sono le radici a due a due distinte e mi ,
molteplicitá , tali che m1 + m2 + . . . mk = n
i = 1, . . . k sono le relative
Teorema
Siano p(x), b(x) polinomi con b(x) 6= 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) 6= 0 é sempre possibile trovare un
polinomio quoziente q(x) ed un polinomio resto r(x) per cui
p(x)
r(x)
= q(x) +
b(x)
b(x)
Valutazione numerica di un polinomio
P
Assegnato un polinomio di grado n (nella sua forma convenzionale) p(x) = ni=0 ai xi Un
algoritmo immediato per la sua valutazione in x0 é 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
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) = a0 + x(a1 + x(a2 + x(a3 + . . . + x(an−1 + xan ) . . .)))
si ricava il seguente metodo dovuto a Horner:
.....
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 − x0 ) per un certo x0 reale. Allora il
risultato 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) é 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:
2011/01/12
3
Teorema
Il resto della divisione del polinomio p(x) per (x − x0 ) é r = p(x0 ).
Dal teorema del resto enunciato si deduce che per valutare un polinomio in un punto x0
si puó determinare il resto della divisione fra p(x) e (x − x0 ). A tal fine é nota la regola
di Ruffini:
an an−1 . . .
. . . a2 a1 a0
x
xbn xbn−1 . . . xb3 xb2 xb1
bn
bn−1
...
da cui noti i coefficienti a0 , a1 , . . . an ed x0
ricavare cosı́
bn
←
bn−1 ←
bn−2 ←
..
..
.
.
b1
r
. . . b2
b1
r
i coefficienti bi ed il resto r = p(x0 ) si possono
an
an−1 + x0 bn
an−2 + x0 bn−1
..
.
← a1 + x0 b2
← a0 + x0 b1
P
n−1 ; ma questo schema é esattamente quello
con q(x) = n−1
i=0 bi+1 x = b1 + b2 x + . . . bn x
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 − 2x2 + 3x4 e si voglia calcolare p(2). Quando la valutazione si
effettua manualmente la regola di Ruffini é molto comoda:
3
2
3
0
−2
1
1
6
12
20
42
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 = x0 cioé p0 (x0 ).
Da quanto detto vale:
p(x) = q(x)(x − x0 ) + p(x0 )
derivando
p0 (x) = q 0 (x)(x − x0 ) + q(x)
P
n−1
e per x = x0
p0 (x0 ) = q(x0 ) dove q(x) = i=0
bi+1 xi 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 p0 (2) per p(x) = 1 + x − 2x2 + 3x4 differenziando esplicitamente p(x) si ha:
p0 (x) = 1 − 4x + 12x3 ,
p0 (2) = 1 − 8 + 96 = 89
2011/01/12
4
3
2
0
−2
1
1
6
12
20
42
3
6
10
21
43 = P(2)
6
24
68
3
12 34
2
89 = P’(2)
Il calcolo di p(x0 )e p0 (x0 ) 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 − x0 ) + r si ottiene
p0 (x) = q 0 (x)(x − x0 ) + q(x),
p”(x) = q”(x)(x − x0 ) + 2q 0 (x),
da cui p”(x0 ) = 2q 0 (x0 ). Quindi per calcolare p”(x0 ) é necessario calcolare q 0 (x0 ) utilizzando lo schema di Horner.
Esempio Si valuti p”(2) per p(x) = 1 + x − 2x2 + 3x4 In generale possiamo scrivere la
3
2
3
2
0
−2
1
6
12
20
42
6
10
21
43 = P(2)
6
24
68
3
12 34
3
6
18
2
1
89 = P’(2)
36
70 = P"(2)/2
relazione fra un polinomio dividendo e il suo polinomio quoziente utilizzando un indice
pj (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).
2011/01/12
5
Esistono varie funzioni M atlab che manipolano i polinomi:
POLYVAL, POLYFIT, POLY, ROOTS, CONV
Si voglia valutare p(x) = 3x7 + 2x2 + 1 nei punti equidistanti xk = −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]
À y = polyval(p, x)
y = 0 1.7245 1.4766 1.1248 1.0000 1.1252 1.5234 2.5255 6.0000
La function polyfit applica i minimi quadrati per trovare il polinomio di best-fit. Dal manuale in linea di Matlab:
POLYFIT Fit polynomial to data.
P = POLYFIT(X,Y,N) finds the coefficients of a polynomial P(X) of
degree N that fits the data Y best in a least-squares sense. P is a
row vector of length N+1 containing the polynomial coefficients in
descending powers, P(1)*X^N + P(2)*X^(N-1) +...+ P(N)*X + P(N+1).
[P,S] = POLYFIT(X,Y,N) returns the polynomial coefficients P and a
structure S for use with POLYVAL to obtain error estimates for
predictions. S contains fields for the triangular factor (R) from a QR
decomposition of the Vandermonde matrix of X, the degrees of freedom
(df), and the norm of the residuals (normr). If the data Y are random,
an estimate of the covariance matrix of P is (Rinv*Rinv’)*normr^2/df,
where Rinv is the inverse of R.
Nel caso in cui i vettori X, Y contenenti i dati da approssimare siano di dimensione N
la function polyfit calcola il polinomio di interpolazione. Come si legge dal manuale questo
viene calcolato costruendo la matrice di Vandermonde che come é noto é mal condizionata,
per cui se il set di dati genera una matrice V malcondizionata é molto probabile ottenere
il seguente messagio:
Warning: Polynomial is badly conditioned. Add points with distinct X
values, reduce the degree of the polynomial, or try centering
and scaling as described in HELP POLYFIT.
Matlab fornisce i coefficienti del polinomio calcolato, ma informa che poiche’ la matrice
dei coefficienti é mal condizionata i dati possono non essere attendibili.
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) = x4 − 1 e p2(x) = x3 − 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)
2011/01/12
6
q=
10
r=
0001 −1
Troviamo pertanto i polinomi p(x) = p1(x)p2(x) = x7 −x4 −x3 +1, q(x) = x e r(x) = x−1
tali che p1(x) = q(x) ∗ p2(x) + r(x).
POLY(A), when A is an N by N matrix, is a row vector with
N+1 elements which are the coefficients of the
characteristic polynomial, DET(lambda*EYE(SIZE(A)) - A) .
Esempio




A=


1/3
1
0
0
0
2/3
0
0
0
0
3
−1
−5/3
1
0
0
2
−2/3
0
0

0
0
1/2
2/3






À p = poly(A)
p = 1 2/3 − 13/9 − 962/999 4/9 296/999]
quindi il polinomio p(x) ha la seguente espressione:
p(x) = x5 + 2/3x4 − 13/9x3 − 962/999x2 + 4/9x + 296/999
POLY(V), when V is a vector, is a vector whose elements are
the coefficients of the polynomial whose roots are the
elements of V . For vectors, ROOTS and POLY are inverse
functions of each other, up to ordering, scaling, and
roundoff error.
À c = poly([1, 1, 1, 1, 2])
c = 1 − 6 14 − 16 9 − 2
quindi il polinomio ha la seguente espressione:
p(x) = x5 − 6x4 + 14x3 − 16x2 + 9x − 2
ROOTS Find polynomial roots.
ROOTS(C) computes the roots of the polynomial whose coefficients
are the elements of the vector C. If C has N+1 components,
the polynomial is C(1)*X^N + ... + C(N)*X + C(N+1).
Note: Leading zeros in C are discarded first. Then, leading
relative zeros are removed as well. That is, if division by the
leading coefficient results in overflow, all coefficients up to the
first coefficient where overflow ocurred are also discarded. This
process is repeated until the leading coefficient is’nt a relative 0
À r = roots(c)
r= 2.0000
1.0002 + 0.0002i
1.0002 - 0.0002i
0.9998 + 0.0002i
0.9998 - 0.0002i
>> S=compan(c)
S=
2011/01/12
6
-14
1
0
0
1
0
0
0
0
>> eig(S)
ans = 2.0000
1.0002
1.0002
0.9998
0.9998
7
16
0
0
1
0
+
+
-
0.0002i
0.0002i
0.0002i
0.0002i
-9
0
0
0
1
2
0
0
0
0
2011/01/12
8
Interpolazione
Di una funzione f (x) siano noti i valori fi = f (xi ) per i = 0, 1, . . . , n, in corrispondenza
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 una loro base di rappresentazione ϕj (x), j = 0, 1, . . . , n per cui ogni elemento di P
risulta definito da una combinazione lineare a coefficienti reali delle ϕj :
n
X
cj ϕ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
φ∗ (xi ) = fi
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:
• 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 (xi , fi ), i = 0, 1, . . . , n con xj 6= xk k 6= j esiste ed é
unico il polinomio p ∈ Pn che verifica le condizioni
p(xi ) = f (xi )
Dimostrazione
Si consideri il vettore a = (a0 , a1 , . . . , an )T dei coefficienti del polinomio p(x) = a0 + a1 x +
a2 x2 + . . . an xn , il vettore f = (f0 , f1 , . . . , fn )T e la matrice V = {νi,j } detta matrice di
Vandermonde, cosı́ definita:
νi,j = xj−1
i−1 i = 1, 2, . . . , n + 1 j = 1, 2, . . . , n + 1
2011/01/12
9
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 = Πni,j=0;j>i (xj − xi )
e i punti xi 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.
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 n3 /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ú convenienti sia dal punto di vista del costo computazionale che della stabilitá.
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) =
n
X
yi Li,n (x),
x ∈ [a, b]
i=0
Le funzioni di Lagrange sono definite per i = 0, 1, . . . , n:
Li,n (x) =
x − xi−1
x − xi+1
x − xn
x − x0
× ... ×
×
× ... ×
xi − x0
xi − xi−1 xi − xi+1
xi − xn
= Πnj6=i,j=0
x − xj
xi − xj
Le funzioni di Lagrange Li,n (x) formano una base per lo spazio Pn dei polinomi di
grado n
{L0,n (x), L1,n (x), . . . Ln,n (x)}
Per come sono definite valgono le seguenti proprietá
(
Li,n (xj ) = δij =
1 se j = i
0 se j 6= i
Li,n (x) é un polinomio di grado al piú n, con n zeri distinti: x0 , x1 , . . . xi−1 , xi+1 , . . . xn .
Quindi determinare il polinomio p(x) che soddisfi le condizioni di interpolazione p(xi ) = yi ,
∀i, nella forma di Lagrange
p(x) = a0 L0,n (x) + a1 L1,n (x) + . . . + an Ln,n (x)
imponendo le condizioni di interpolazione si ottiene il sistema lineare






L0,n (x0 )
L0,n (x1 )
..
.
L1,n (x0 )
L1,n (x1 )
..
.
...
...
..
.
Ln,n (x0 )
Ln,n (x1 )
..
.
L0,n (xn ) L1,n (xn ) . . . Ln,n (xn )
 
 
 
·
 
 
a0
a1
..
.
an


 
 
=
 
 
y0
y1
..
.
yn






2011/01/12
10
Si osservi che la matrice L risulta uguale alla matrice identitá di ordine n + 1, In+1 .
Quindi nell’interpolazione secondo Lagrange non cerchiamo i coefficienti ai perché sono
identicamente uguali ai valori noti yi . In questo caso cerchiamo proprio le funzioni base di
Lagrange costruite sulle ascisse xi . L’idea é di risolvere gli n + 1 problemi di interpolazione
dove le ascisse x0 , x1 , . . . , xn sono quelle del problema iniziale in corrispondenza delle quali
si hanno n + 1 insiemi 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 soluzioni
parziali:
p(x) =
n
X
yi Li,n (x)
i=0
é il polinomio unico di interpolazione e
Li,n (xj ) = δi,j ⇒ p(xi ) =
n
X
yi Li,n (xi ) = yi
∀i.
i=0
Esempio
Dati i punti x0 = 0, x1 = 1, x2 = 3 Le funzioni base di Lagrange ( anche dette funzioni
cardinali) costruite su queste ascisse sono
L0,2 =
(x − 1)(x − 3)
x2 − 4x + 3
x−1 x−3
·
=
=
0−1 0−3
3
3
x−0 x−3
−x(x − 3)
·
=
1−0 1−3
2
x−0 x−1
x(x − 1)
L2,2 =
·
=
3−0 3−1
6
Il polinomio che interpola i tre punti (0, y0 ), (1, y1 ), (3, y2 ) é allora
L1,2 =
1.2
1
0.8
0.6
0.4
0.2
0
−0.2
−0.4
0
p(x) = y0
0.5
1
1.5
2
2.5
3
−x(x − 3)
x(x − 1)
x2 − 4x + 3
− y1
+ y2
3
2
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 (xi , yi ) fossero
2011/01/12
11
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:
L0,2 =
x2 − 4x + 3
,
3
L1,2 =
−x(x − 3)
i
2
e
L2,2 =
x(x − 1)
6
x2 − 4x + 3 x(x − 3)
x(x − 1)
−
+3
= x.
3
2
6
Se si deve valutare il polinomio interpolatore espresso nella forma di Lagrange p(x) =
P
un punto x̂i 6= xi , ∀i, si é tentati dal volerlo trasformare nella forma monoi yi Li,n (x) in
P
miale p(x) = i ai xi per 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 ← 0
for j=0,1,. . .,n
....... q ← 1
....... for i=0,1,. . .,n
...............if j 6= i
(x̃−xi )
............... q ← q × (x
j −xi )
....... end
....... p ← p + yj × q
end
ma anche questo ha un costo di circa 4n2 operazioni (×, +).
Per cui occorre cambiare strategia.
Consideriamo
p(x) = 0
ω(x) = (x − x0 )(x − x1 ) . . . (x − xn−1 )(x − xn ) = Πnk=0 (x − xk )
Quindi possiamo scrivere
p(x) =
n
X
yi Li,n (x) = ω(x)
i=0
i=0
con
zi =
Infatti
n
X
n
X
yi
n
Πj6=i,j=0 (xi
yi Li,n (x) =
i=0
n
X
zi
x − xi
− xj )
yi Πnj6=i,j=0
i=0
x − xj
=
xi − xj
Πnj6=i,j=0 (x − xj )
=
yi n
Πj6=i,j=0 (xi − xj )
i=0
n
X
=
n
X
i=0
=
n
X
i=0
yi
ω(x)/(x − xi )
=
Πnj6=i,j=0 (xi − xj )
ω(x)
yi
Πnj6=i,j=0 (xi − xj ) x − xi
=
n
X
i=0
zi
ω(x)
x − xi
2011/01/12
12
= ω(x)
n
X
i=0
ove abbiamo posto
zi =
Quindi per calcolare
p(x̃) =
n
X
zi
x − xi
yi
n
Πj6=i,j=0 (xi
− xj )
yi Li,n (x̃) = ω(x̃)
i=0
n
X
i=0
zi
x̃ − 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̃).
In totale questo calcolo richiede n2 /2 addizioni ed n2 prodotti. Per calcolare il valore
dello stesso polinomio p in un altro punto x̂ conviene sempre usare questa forma perché
gli scalari zi dipendono solo da xi 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 xi e variando solo le ordinate yi si puó ancora calcolare p(x) con n
somme e 2n prodotti aggiuntivi.
2011/01/12
13
RIEPILOGO
I costi computazionali dell’interpolazione con la forma di Lagrange sono i seguenti:
Calcolo in un punto: n2 /2 somme ed n2 prodotti
Calcolo in m punti:
n2 /2 + 2nm somme ed n2 + 2mn prodotti.
In MATLAB
ŷ = lagrval(y, x, x̂)
function yy=lagrval(x,y,xx)
% 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);
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
1 punto
in m punti
P. di Lagrange
n2 /2(+) + n2 (×)
P.di Newton
n2 (+) + n2 /2(×)
n2 /2 + 2mn)(+)+
+(n2 + 2mn)(×)
(n2 + 2mn)(+)+
+n2 /2 + 2mn)(×)
2011/01/12
14
Analisi dell’errore di interpolazione
Dati n+1 osservazioni fi 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 (xi , fi ). 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̂ 6= xi ,
∀i.
Per dare una risposta é necessario porre alcune ipotesi di regolaritá sulla f .
Teorema
n+1
Sia f (x) ∈ C[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:
ω(x̂) n+1
f
(ξ)
R(x̂) := f (x̂) − p(x̂) =
(n + 1)!
con
ω(x) = (x − x0 )(x − x1 ) . . . (x − xn ) = Πnk=0 (x − xk ).
Corollario
Si indichi con
Mn+1 = max |f n+1 (x)|
x∈[a,b]
allora un limite superiore ad R(x) = f (x) − p(x) é dato da
|R(x)| =
|ω(x)|
Mn+1 .
(n + 1)!
Esempio
n+1
f (x) = ex , f ∈ C[a,b]
, si ha:
Mn+1 = max |ex | = eb
x∈[a,b]
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
max |R(x)| ≤
x∈[a,b]
ma in questo caso
(b − a)n+1 b
e
(n + 1)!
(b − a)n+1 b
e =0
n→∞ (n + 1)!
lim max |R(x)| = lim
n→∞ x∈[a,b]
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 xi di interpolazione tende a ∞.
2011/01/12
15
Estrapolazione L’espressione dell’errore R(x) evidenzia come nel caso di estrapolazione
x̂ ∈
/ [a, b] := [min xi , max xi ]
i
i
l’errore R(x) 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
yi dei punti di interpolazione (xi , yi ) come numeri arbitrari. Assumiamo che soddisfino
la relazione f (xi ) = yi dove f abbia tutte le derivate necessarie. Quindi si dice che il
polinomio p(x) calcolato interpola la f in x0 , x1 , . . . , 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 x0 , x1 , . . . , 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 + t2 )
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:
xi = i
10
− 1,
n
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:
xi = cos( (2i+1)π
2(n+1) ) ∈ [−1, 1] i = 0, 1, . . . , n
oppure
(2i+1)π
b−a
xi = a+b
2 − 2 cos( 2(n+1) ) ∈ [a, b] i = 0, 1, . . . , n
Con questa distribuzione delle ascisse xi si dimostra che, al crescere di n → ∞, il polinomio
pn (x) di interpolazione converge a f (x) quando x ∈ [a, b].
2011/01/12
16
interpolazione funzione di Runge punti equidistanti
interpolazione funzione di Runge punti equidistanti
1
2
1.5
0.5
1
0.5
0
0
−0.5
−5
−4
−3
−2
−1
0
1
grado del polinomio 6
2
3
4
5
−0.5
−5
−4
−3
−2
−1
0
1
grado del polinomio 10
2
3
4
5
Questo comportamento é 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 puó essere limitato se si scelgono i punti di interpolazione in
modo che
| max ω(x)|
x∈[a,b]
sia minimo. I punti di Chebyshev sono un tentativo di aggiustare i punti di interpolazione
interpolazione funzione di runge
interpolazione funzione di runge
1
1
0.5
0.5
0
0
−0.5
−5
−4
−3
−2
−1
0
1
grado del polinomio 6
2
3
4
5
poli. di grado 6 interpolante nei punti di Chebyshev evidenziati
−0.5
−5
−4
−3
−2
−1
0
1
grado del polinomio 10
min max |ω(x)| = (b − a)−n
ω(x) x∈[a,b]
e il minimo é raggiunto quando
(2i + 1)π
a+b b−a
−
cos(
) ∈ [a, b] i = 0, 1, . . . , n
2
2
2(n + 1)
che sono i punti di Chebyshev.
3
4
5
poli. di grado 10 interpolante nei punti di Chebyshev evidenziati
Si puó dimostrare che
xi =
2
2011/01/12
17
5
5
grafico della funzione omega
grafico della funzione omega
x 10
equi.
chebychev
4000
equi.
chebychev
4
3000
3
2000
2
1000
1
0
0
−1
−1000
−2
−2000
−3
−3000
−4
−4000
−5
−4
−3
−2
−1
0
1
grado del polinomio 6
2
3
4
5
funzione ω per polinomi di grado 6
−5
−5
−4
−3
−2
−1
0
1
grado del polinomio 10
2
3
4
5
funzione ω per polinomi di grado 10
interpolazione funzione di runge
11
1
1.5
grafico della funzione omega
x 10
equi.
chebychev
0.9
1
0.8
0.7
0.5
0.6
0.5
0
0.4
−0.5
0.3
0.2
−1
0.1
0
−5
−4
−3
−2
−1
0
1
grado del polinomio 20
2
3
4
5
Poli. di grado 20 interpolante nei punti di Chebyshev evidenziati
−1.5
−5
−4
−3
−2
−1
0
1
grado del polinomio 20
2
3
4
funzione ω per polinomi di grado 20
Sfortunatamente ci sono funzioni per cui l’interpolante nei punti di Chebyshev non
converge e occorre cambiare strategia.
5
2011/01/12
18
Interpolazione polinomiale a tratti
Si intende l’interpolazione di un set di dati su un intervallo con più polinomi ciascuno
dei quali definito in un sottointervallo dell’intervallo dato. In particolare siano assegnate
m + 1 osservazioni in corrispondenza di m + 1 punti distinti e ordinati, cioè siano assegnati
(xi , yi ), i = 0, . . . , m con xi < xi+1 . Allora una interpolante polinomiale a tratti consiste
in m polinomi pi (x), i = 0, . . . , m − 1 di grado n, definiti sugli intervalli [xi , xi+1 ] con le
seguenti proprietà:
•
pi−1 (xi ) ≡ pi (xi ) = yi
i = 1, . . . , m − 1
• fissato k ≤ n − 1, non negativo, deve valere
(`)
(`)
pi−1 (xi ) ≡ pi (xi ),
` = 1, . . . , k,
i = 1, . . . , m − 1
Si dirà che l’interpolante a tratti è di classe C k intendendo che è una funzione continua
fino alla derivata di ordine k.
Polinomi a tratti
Abbiamo osservato che i polinomi hanno un comportamento inaccettabile quando vengono utilizzati per approssimare dati o funzioni. Quando superano il quinto o sesto grado
oscillano fortemente su intervalli di definizione grandi, mentre hanno un buon comportamento se di grado basso e su intervalli piccoli. Questo fenomeno suggerisce di utilizzare
polinomi di grado relativamente basso e suddividere l’intervallo in piccole parti. Si puó
dare la seguente definizione:
Definizione: Polinomio a Tratti
Sia [a, b] un intervallo limitato e chiuso e sia ∆ la partizione dell’intervallo [a, b] data da:
∆ = {xi }i=0,...,m
su un insieme di punti , detti nodi, tali che:
a = x0 < x1 < . . . < xm = b
La partizione di [a, b] indotta dall’insieme ∆ risulta
• I0 = [x0 , x1 ]
• Ii = [xi , xi+1 ] i = 1, . . . , m − 1
• Im = [xm−1 , xm ]
Indichiamo con Pn lo spazio dei polinomi a coefficienti reali di ordine al piú n, definiamo
lo spazio dei polinomi a tratti:
T Pn = {ϕ | ∃p0 , p1 , . . . pm ∈ Pn ; tale cheϕ(x) = pi (x),
∀x ∈ Ii , i = 0, 1, . . . , m}
Esempio
Consideriamo il polinomio a tratti di grado 1 che interpola la funzione di Runge f (x) =
1
nei 7 nodi equidistanti assegnati in figura
1+x2
Si osserva che utilizzando i polinomi a tratti si é guadagnato in flessibilitá, ma si é perso
in regolaritá: l’interpolante non ha piu’ la derivata prima continua. In molte applicazioni
si richiede che la funzione approssimante sia almeno di classe C 1 .
2011/01/12
19
interpolazione a tratti con polinomi lineari
1
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
Interpolazione locale
Per interpolazione locale si intende un metodo che individua il polinomio interpolante
a tratti determinando ogni singolo polinomio pi (x) in modo indipendente dagli altri.
Consideriamo il caso particolare di polinomi a tratti cubici, con regolarità C 1 ; i singoli
polinomi cubici pi (x) possono essere espressi nella base di Bernstein e determinanti in
modo da interpolare le ordinate yi e yi+1 in corrispondenza di xi e xi+1 sull’intervallo
0
[xi , xi+1 ] e i valori di derivata yi0 e yi+1
sempre in corrispondenza di xi e xi+1 . In questo
caso si parla di interpolanti cubiche di Hermite. I metodi di interpolazione locale fanno
uso delle derivate yi0 in corrispondenza dei punti assegnati xi . Se queste non sono date,
devono essere calcolate e diventano parte integrante del problema di interpolazione.
Interpolazione globale
Per interpolazione globale si intende un metodo che determina il polinomio a tratti
interpolante ricavando ciascun polinomio pi (x) in modo dipendente dagli altri. Nel caso
particolare di polinomi a tratti cubici con massima regolarità C 2 si parla di Spline cubiche di Interpolazione.
Lo spazio delle funzioni Spline polinomiali di grado n può essere sinteticamente scritto
come :
(n−1)
Sn (∆) = T Pn (∆) ∩ C[a,b]
Questa condizione implica che ogni elemento di Sm (∆) é sufficientemente flessibile, perché
si hanno funzioni continue e derivabili con continuitá sino all’ordine n − 1 che é la massima
regolaritá che si puó richiedere ai polinomi a tratti di grado m-1.
Consideriamo le funzioni Spline cubiche.
Riassumendo:
siano x0 < x1 < x2 < . . . < xm punti dati detti nodi , una Spline Cubica é una funzione
S(x), definita sull’intervallo [x0 , xm ] con le seguenti proprietá:
• é una funzione con derivate prime e seconde continue
• ristretta ad ogni intervallo Ii é un polinomio di grado 3
• S(xj ) = f (xj ), per j = 0, 1, 2, . . . , m
2011/01/12
20
1
0.9
0.8
0.7
S
S
0
0.6
S
1
m−2
Sm−1
0.5
0.4
x
0
x1
xm−1 x
m
x2
0.3
0.2
0.1
0
0
0.2
0.4
0.6
0.8
1
Se poniamo S(x) = si (x) per xi ≤ x ≤ xi+1 , gli si (x) saranno m polinomi cubici del
tipo si (x) = ai + bi x + ci x2 + di x3 per x ∈ [xi , xi+1 ], i = 0, 1, . . . , k per ciascuna cubica
occorrono 4 condizioni quindi in totale 4m condizioni per determinare tutti i coefficienti.
Ogni polinomio interpola la f negli estremi del proprio intervallo. Questo dá 2m condizioni.
Le condizioni di continuitá delle drivate nei nodi interni rispettivamente:
• s0i−1 (xi ) = s0i (xi )
per i = 1, 2, . . . , m − 1
• s”i−1 (xi ) = s”i (xi )
sono altre 2(m − 1) condizioni.
In tutto si hanno 2m + 2(m − 1) = 4m − 2 condizioni per detereminare i 4m coefficienti.
Le restanti due condizioni vengono scelte fra:
0 , con y 0 e y 0 assegnati dall’utente Spline con derivate
1. s00 (x0 ) = y00 e s0m−1 (xm ) = ym
m
0
agli estremi,
2. s”(x0 ) = s”(xm ) = 0 Spline di Interpolazione Naturali
3. s0 (x0 ) = sm (xm ), s0 (x0 ) = s0 (xm ) e s”(x0 ) = s”(xm ) Spline di Interpolazione periodiche (si usano quando y0 = ym , cioe’ quando si vogliono interpolare curve chiuse
o periodiche).
In alternativa alla seconda condizione, si puó richiedere che la derivata terza di S(x) nei
nodi x0 e xm sia continua. Questa condizione a cui viene attribuito il nome not-a-knotcondition é quella implementata nel comando Matlab spline ( si veda anche il toolbox
Splines).
Per determinare i coefficienti ai , bi , ci , di si potrebbe al solito usare tutte le condizioni
elencate per ricavare un sistema avente come incognite i coefficienti e risolverlo, ma non é
il modo piú efficiente. Un metodo efficiente si ottiene prendendo come incognite i momenti
cioé le derivate seconde nei nodi xi
Mi = S”3 (xi )
essendo ogni S”(x) una spline del primo ordine cioé una funzione lineare a tratti avremo
S”(x) =
(x − xi−1 )Mi + (xi − x)Mi−1
xi − xi−1
x ∈ [xi−1 , xi ]
Posto hi = (xi − xi−1 ) integrando due volte nell’intervallo [xi−1 , xi ]si ha
S 0 (x) =
(x − xi−1 )2 Mi − (xi − x)2 Mi−1
+ Ci
2hi
x ∈ [xi−1 , xi ]
2011/01/12
21
e
(x − xi−1 )3 Mi + (xi − x)3 Mi−1
+ Ci (x − xi−1 ) + Di
6hi
S(x) =
x ∈ [xi−1 , xi ]
imponendo le condizioni di interpolazione si (xi ) = si−1 (xi ) si ottengono i parametri Ci e
Di in funzione dei momenti Mi piú precisamente
(xi −xi−1 )3 Mi−1
+ Di = yi − 1
6hi
(xi −xi−1 )3 Mi
+ Ci (xi − xi−1 ) +
6hi
i = 1, . . . , m
Di = yi
da cui si ricava
Di = yi−1 −
h2i
Mi−1 ,
6
Ci =
(Mi − Mi−1 )
(yi − yi−1 )
− hi
hi
6
infine sostituendo nella S 0 (x) si ottiene per x ∈ [xi−1 , xi ]
S 0 (x) =
Mi − Mi−1
(x − xi−1 )3 Mi + (xi − x)3 Mi−1 yi − yi−1
+
− hi
6hi
2hi
6
Imponendo la continuitá di S 0 (x) nei nodi (rispettivamente s0i (xi ) = s0i−1 (xi )) per i =
1, . . . , m − 1 si ha
¶
µ
hi Mi−1 + 2(hi + hi+1 )Mi + hi+1 Mi+1
yi+1 − yi yi − yi−1
−
.
=6
hi+1
hi
Tenendo conto che per le spline naturali M0 = Mm = 0 si ottiene un sistema di equazioni
lineari nelle m − 1 incognite M1 , M2 , . . . Mi−1 la cui matrice dei coefficienti é

2(h1 + h2 ) h2
...
0
 h
2(h2 + h3 )
...
0
 2

..
..
..

.
.
.
 0
 .
..
 .
.
 .
hm−1
0
...
hm−1 2(hm−1 + hm )









La risoluzione di questo sistema comporta un costo computazionale dell’ordine di 3n moltiplicazioni. Si osservi che nel caso in cui hi ≡ 1 ∀i il sistema si semplifica in







4
1
1
4
0
1
...
0 ...

0 0 ... 0
1 0 ... 0 


4 1 ... 0 


0 0
1
4
D’ora in poi per calcolare una spline utilizzeremo il comando MATLAB
spline(x,y,z) i parametri di ingresso di questa function sono i vettori x e y dei nodi di
interpolazione ed il vettore z delle ascisse nelle quali si vuole che venga valutata la spline.
Le curve spline sono usate in numerose applicazioni industriali e sono alla base dei
moderni sistemi CAD, il vantaggio di usare una spline è di fornire movimenti regolari
evitando bruschi cambi di velocità e accelerazione se regolare sino alla derivata seconda.
Riprendiamo l’esercizio riguardante l’interpolazione della funzione di Runge:
f (x) =
.
1
x2 + 1
2011/01/12
22
Interpolazione mediante spline cubica naturale della funzione Runge con 19 punti di interpolazione
1
0.9
0.8
0.7
Funzione Runge
Spline cubica interpolante
Punti di interpolazione
0.6
0.5
0.4
0.3
0.2
0.1
0
−5
Figure 1:
−4
−3
−2
−1
0
1
2
3
4
5
Interpolazione della funzione di Runge con una spline cubica naturale su una partizione contenente 19 punti
nell’intervallo [−5; 5].
Interpolazione con il polinomio di grado 6 sui 7 punti equidistanti della funzione di
1
Runge f (x) = 1+x
2 definita sull’intervallo [−5, 5]
interpolazione funzione di Runge punti equidistanti
Interpolazione mediante spline cubica naturale della funzione Runge con 7 punti di interpolazione
1
1
0.9
0.8
0.7
0.5
Funzione Runge
Spline cubica interpolante
Punti di interpolazione
0.6
0.5
0.4
0
0.3
0.2
0.1
−0.5
−5
−4
−3
−2
−1
0
1
grado del polinomio 6
2
3
4
5
0
−5
−4
−3
−2
−1
0
1
2
3
4
5
. Interpolazione della funzione di Runge con una spline cubica naturale su una partizione nodale di 7 punti equidistanti nell’intervallo [−5; 5].
Interpolazione mediante spline cubica naturale della funzione Runge con 11 punti di interpolazione
1
interpolazione funzione di Runge punti equidistanti
2
0.9
Funzione Runge
Spline cubica interpolante
Punti di interpolazione
0.8
1.5
0.7
0.6
1
0.5
0.4
0.5
0.3
0
0.2
0.1
−0.5
−5
−4
−3
−2
−1
0
1
grado del polinomio 10
2
3
4
5
0
−5
−4
−3
−2
−1
0
1
2
3
4
[Interpolazione della funzione di Runge con una spline su 11 punti]Interpolazione della funzione
di Runge con una spline cubica naturale su una partizione nodale di 11 punti nell’intervallo [−5; 5].
5
2011/01/12
N.punti
23
maxx |R(x)|
N.punti
maxx |R(x)|
11
0.02193
12
0.08382
21
0.00318
22
0.00802
31
0.00084
32
0.00131
41
0.00063
42
0.00061
In tabella è riportato l’errore massimo per l’interpolazione polinomiale cubica a tratti
C 2 della funzione di Runge su punti equidistanti.
Esempio
Nella tabella seguente sono riportate le variazioni di temperatura media annua del
globo al variare della concentrazione K di acido carbonico e della latitudine:
latitudine
65
55
45
35
25
15
5
-5
-15
-25
-35
-45
-55
K=0.67
-3.1
-3.22
-3.3
-3.32
-3.17
-3.07
-3.02
-3.02
-3.12
-3.2
-3.35
-3.37
-3.25
K=1.5
3.52
3.62
3.65
3.52
3.47
3.25
3.15
3.15
3.2
3.27
3.52
3.7
3.7
K=2.0
6.05
6.02
5.92
5.7
5.3
5.02
4.95
4.97
5.07
5.35
5.62
5.95
6.1
K=3.0
9.3
9.3
9.17
8.82
8.1
7.52
7.3
7.35
7.62
8.22
8.8
9.25
9.5
Le tecniche di approssimazione previste consentono di ricostruire a partire dai dati
disponibili i valori della temperatura anche per latitudini o concentrazioni non previste
dalla tabella stessa. Consideriamo la colonna K = 0.67 e calcoliamo la spline cubica
interpolatoria S3 . Per ottenere le valutazioni di S3 in corrispondenza dei valori zi =
−55 + i, i = 0, . . . , 120 occorre dare le seguenti istruzioni:
À x = [−55 : 10 : 65];
À y = [−3.25, −3.37, −3.35, −3.2, −3.12, −3.02, −3.02, ...
−3.07, −3.17, −3.32, −3.3, −3.22, −3.1]
À z = [−55 : 1 : 65];
s = spline(x, y, z)
Si noti l’uso dei tre punti di continuazione tramite i quali si informa Matlab che la riga contenete l’istruzione continua. La linea tratteggiata é il grafico del polinomio interpolatore
di grado 12.
Errore di interpolazione
La teoria dell’errore nell’approssimazione spline è più complessa di quella relativa
all’ordinaria interpolazione a tratti, qui illustriamo i risultati principali:
Teorema
2
Fra tutte le funzioni g(x) ∈ C[a,b]
tali che g(xi ) = f (xi ) per i = 0, . . . , n (cioè soddisfano
le condizioni di interpolazione), la spline naturale s(x) è quella che minimizza l’integrale
Z b
a
[g”(x)]2 dx
L’integrale può essere assunto come una misura della curvatura globale della funzione g(x),
quindi risulta che la spline cubica naturale è quella che minimizza la curvatura globale. Si
ricorda che la curvatura descritta dall’equazione
y = f (x)
2011/01/12
24
−2.7
pol.12 grad0
nodi
spline cubica
−2.8
−2.9
−3
−3.1
−3.2
−3.3
−3.4
−3.5
−60
−40
−20
0
20
40
60
80
è data da:
|f ”(x)| · {1 + f 0 (x)2 }−3/2
quindi se f 0 (x) è sufficientemente piccolo, f ”(x) risulta una approssimazione della curvatura e l’operazione di integrazione risulta una misura di quanto oscilla la funzione.
Quando non si conosce nulla circa la f (x), la scelta della spline not a knot condition implementata sotto Matlab è la migliore. Il nome indica che il primo e l’ultimo nodo interno
x1 , xm−1 non si comportano come nodi normali infatti se richiediamo la continuità della
s3 (x) in quei punti troviamo che i primi due tratti cubici sono identici analogamente per
gli ultimi due, le due condizioni di continuitá equivalgono ad eliminare i nodi x2 e xm−1
dalla suddivisione mantenedo comunque le condizioni di interpolazione.Per tale motivo
tali consizioni sono note come not a knot condition e fornisce una esemplificazione del
fatto che nel caso di funzioni polinomiali a tratti i punti della suddivisione non coincidono
necessariamente con i nodi dell’interpolazione.
2
Dal teorema sopra esposto segue anche che se f (x) ∈ C[a,b]
allora
Z b
a
2
[S”(x)] dx ≤
Z b
a
[f ”(x)]2 dx
a differenza di quanto accade per i polinomi che interpolano la f (x) su tutto l’intervallo
[a, b] quando si infittiscono i nodi xi , i = 0, . . . , n le funzioni spline convergono alla f (x)
. Nell’ipotesi in cui la f (x) abbia derivate continue sino a quella del quart’ordine vale la
sequente disuguaglianza
max |f r (x) − sr3 (x)| ≤ Cr H 4−r max |f 4 (x)|,
x∈I
x∈I
r = 0, 1, 2, 3
ove H è la masima ampiezza degli intervalli Ii e le costanti Cr sono indipendenti da H.
È quindi evidente che non solo la funzione f , ma anche le sue derivate prima, seconda e
terza vengono bene approssimata dalla S(x).
2011/01/12
25
Integrazione numerica
L’integrazione numerica o quadratura numerica consiste nel calcolare un’approssimazione
per
Z b
a
f (x)dx
Il problema sorge quando l’integrazione non puó essere eseguita esattamente, cioé non si
puó trovare una funzione primitiva come per esempio per
Z 1
0
e
−x2
Z
dx,
o
π
2
q
0
(1 + cos2 (x))dx.
Anche nel caso in cui la si conosca, potrebbe essere complicato valutarla. Ad esempio
1
π
Z π
0
∞
(−9/4)4
3 X
,
cos(4π)cos(3sin(x))dx = ( )4
2 k=0 k!(k + 4)!
in questo ultimo caso il problema del calcolo dell’integrale si é trasformato in quello della
somma di una serie. Il calcolo numerico dell’integrale si utilizza quando la funzione integranda é nota soltanto in un numero finito di punti o scaturisce da misure sperimentali,
o ancora anche se é nota la primitiva, ma il suo calcolo puó essere cosı́ costoso che é
preferibile utilizzare un metodo numerico per determinare una approssimazione. In tutte
queste situazioni e necessario approntare metodi numerici in grado di restituire un valore
approssimato del calcolo dell’integrale.
I metodi che vedremo consistono nell’approssimare o interpolare la funzione integranda
mediante polinomi che risultano facilmente integrabili.
50
45
40
35
30
25
20
15
10
5
0
−3
−2
Figure 2:
−1
0
f (x) = abs(x3 − 20)
1
2
per
3
x ∈ [−3, 3]
L’approssimazione del valore dell’integrale con la formula del punto medio, anche detto
metodo dei rettangoli, porta ad individuare l’area del rettangolo in figura.
2011/01/12
26
50
45
40
35
30
25
20
15
10
5
0
−3
−2
−1
0
1
2
(a+b)/2
a
Figure 3:
3
b
IP M (f ) = (b − a)f [(a + b)/2]
Formule di quadratura interpolatorie
Nella sua forma piú generale una formula di quadratura esprime un’approssimazione
di un integrale come una combinazione lineare dei valori della funzione integranda cioé:
Z b
f (x)dx ≈
a
n
X
ωi f (xi )
i=0
Sia Φ uno spazio di funzioni di dimensione n + 1 in cui sia sempre risolubile in modo
unico un problema di interpolazione su n + 1 punti distinti xj , j = 0 : n nell’intervallo
[a, b] , allora é possibile trovare una base di funzioni per tale spazio, chiamate funzioni
CARDINALI, per cui vale
(
1 se i = j
ϕi (xj ) =
0 se i 6= j
Le funzioni cardinali risolvono il problema di interpolazione per i punti (xi , yi ), i =
0, 1, . . . , n, in modo banale, infatti la
Φ(x) =
n
X
yi ϕi (x)
i=0
verifica le condizioni di interpolazione.
Osservazione
L’interpolante espressa nella base delle funzioni cardinali permette di esprimere banalmente la soluzione di un problema di interpolazione analiticamente, ma non computazionalmente.
Considerando l’interpolante nella base cardinale si esprime semplicemente una formula di
quadratura interpolatoria, considerando yi = f (xi )
Z b
a
allora
Z b
a
=
f (x)dx '
Φ(x)dx =
n
X
i=0
f (xi )
Z bX
n
Z b
a
Z b
a i=0
a
Φ(x)dx
f (xi )ϕi (x)dx =
ϕi (x)dx =
n
X
i=0
f (xi )ωi
2011/01/12
27
con
ωi =
Z b
a
ϕi (x)dx,
i = 0, 1, . . . , n
Nel caso in cui consideriamo come spazio delle funzioni Φ lo spazio dei polinomi Pn ,
le funzioni cardinali sono i polinomi elementari di Lagrange
Li (x) = Πnj=0,j6=i
(x − xj )
(xi − xj )
Formule di quadratura di Newton-Cotes
Le formule di quadratura di Newton-Cotes si ottengono considerando n + 1 punti
equidistanti nell’intervallo chiuso [a, b] dati da:
xi = a + ih,
i = 0, 1, . . . , n
con h = b−a
n per n > 0 e interpolando la funzione integranda mediante un polinomio
p ∈ Pn nei punti (xi , f (xi )), i = 0, 1, . . . , n. Se p(x) é il polinomio interpolante nella forma
di Lagrange si avrá
Z b
a
f (x)dx '
Z b
a
p(x)dx =
n
X
f (xi )
Z b
i=1
a
Li (x)dx
Quindi si procede all’integrazione dei polinomi Li (x), i = 0, 1, . . . , n per determinare i
coefficienti ωi della formula di quadratura.
Nell’integrare i polinomi elementari si esegue un cambiamento di variabile di integrazione,
la nuova variabile t é tale che x = a + ht con t ∈ [0, n], poiché xi = a + ih, xj = a + jh e
dx = hdt avremo:
Z b
Z b
(x − xj )
dx
Li (x)dx
Πnj=0,j6=i
(x
a
a
i − xj )
=
Z n
0
Πnj=0,j6=i
=h
Z n
0
(a + ht − a − hj)
hdt
(a + hi − a − hj)
Πnj=0,j6=i
t−j
dt
i−j
Osserviamo allora che i coefficienti ωi (anche detti pesi) sono dati da:
ωi =
Z n
0
Πnj=0,j6=i
t−j
dt
i−j
dipendono solo da n, non dipendono dalla funzione f che deve essere integrata e nemmeno
dagli estremi a e b dell’intervallo di integrazione.
Le formule di Newton-Cotes piú comunemente usate sono quelle per
• n=1, Formula dei Trapezi
• n=2, Formula di Simpson
Ricaviamo queste formule
Formula dei Trapezi: n=1
ω0 =
Z 1
t−1
0
0−1
dt =
Z 1
0
(1 − t)dt = [t −
t2
1
]=
2
2
2011/01/12
28
ω1 =
da cui si ottiene
Z b
Z 1
t−0
0
1−0
f (x)dx '
a
Z b
a
dt =
Z 1
0
tdt = [
p(x)dx =
t2
1
]=
2
2
h
(f (a) + f (b))
2
La funzione f (x) é approssimata da una retta passante per i punti (x0 , f (x0 ) e (x1 , f (x1 );
cioé l’integrale é approssimativamete dato dall’area del Trapezio
abs(xf.3−20)
50
45
40
35
30
25
20
15
10
5
0
−3
−2
−1
0
1
2
3
Formula di Simpson: n=2
ω0 =
Z 2
(t − 1) (t − 2)
0
1
dt =
(0 − 1) (0 − 2)
2
Z 2
0
(t2 − 3t + 2)dt =
1 8 12
1
1 t3 t2
[ − + 2t]20 = ( −
+ 4) =
2 3
2
2 3
2
3
Z 2
Z 2
(t − 0) (t − 2)
ω1 =
dt = −
(t2 − 2t)dt =
0 (1 − 0) (1 − 2)
0
ω2 =
da cui
Z 2
0
Z b
a
8
4
= −( − 4) =
3
3
Z 2
(t − 0) (t − 1)
1
1 8 4
1
dt =
(t2 − t)dt = ( − ) =
(2 − 0) (2 − 1)
2 0
2 3 2
3
f (x)dx '
Z b
a
p(x)dx =
h
(f (x0 ) + 4f (x1 ) + f (x2 ))
3
La funzione f é approssimata da una parabola passante per (x0 , f (x0 ), (x1 , f (x1 ), (x2 , f (x2 )
Esempio
Applichiamo la formula dei Trapezi e di Simpson al calcolo approssimato dell’integrale
di
Z 1
0
2
e−x dx
Il valore esatto alle prime 6 cifre significative é 0.746824.
• Trapezi
Z 1
0
2
e−x dx '
h 0
1
(e + e−1 ) = (1 + 0.367879) = 0.683939
2
2
2011/01/12
29
here
50
45
40
35
30
25
20
15
10
5
0
−3
• Simpson
in questo caso h =
b−a
2
−2
=
0
1
2
3
1
2
Z 1
0
−1
2
e−x dx '
h 0
(e + 4e−1/4 + e−1 ) =
3
1
(1 + 4 × 0.778801 + 0.367879) = 0.747180
6
2
2
y=exp(−x. )
y=exp(−x. ) −− Simpson −−
1
1
0.9
0.9
0.8
0.8
0.7
0.7
0.6
0.6
0.5
0.5
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0.1
0
−1.5
−1
−0.5
0
0.5
1
1.5
0
−1.5
−1
−0.5
0
0.5
1
1.5
Errore di Integrazione o grado di precisione di una formula di quadratura
Sia In una formula di quadratura che assumiamo essere esatta per ogni polinomio di
grado ≤ q allora diciamo che In ha grado di precisone q. Il metodo dei trapezi é una
formula di quadratura con grado di precisione q = 1 cioé integra esattamente polinomi di
primo grado.
Z b
h
f (x)dx = (f (x0 ) + f (x1 )) + RT
2
a
Z b
h
f (x)dx = (f (x0 ) + 4f (x1 ) + f (x2 )) + RT
3
a
Dal teorema che fornisce l’errore di interpolazione polinomiale si ha che l’errore di
integrazione
RT =
Z b
a
(x − x0 )(x − x1 ) . . . (x − xn )
f n+1 (ξ)
dx
(n + 1)!
Nei casi particolari per n = 1 si ha:
• Errore nella formula dei Trapezi n=1
RT = −
1 3
h f ”(η)
12
η ∈ [a, b]
2011/01/12
30
Dall’osservazione della formula dell’errore nel caso n = 1 si nota che il metodo dei Trapezi
é una formula di quadratura esatta per polinomi di grado ≤ 1, infatti la derivata seconda di
questi polinomi si annulla identicamente, e analogamnete la formula per n = 2 indica che
il metodo di Simpson sicuramente é esatta per polinomi di grado ≤ 2 cioé per polinomi di
grado due perché hanno derivata terza nulla. Si dimostra peró che la formula di Simpson
é esatta anche per polinomi di terzo grado cioe’ il grado di precisione é q ≤ 3.
dimostrazione nel caso n=1
RT =
Z b
a
(x − a)(x − b)
f ”(ξ(x))
dx
(2)!
ove ξ(x) ∈ [a, b]. Facciamo un cambiamento di variabile di integrazione, x = a + th;
[0, 1]
Z 1
f ”(ξ(a + th))
dt
RT = h
(a + th − a)(a + th − a − h)
(2)!
0
t∈
Z
h3 1
=
t(t − 1)f ”(ξ(a + th))dt
2 0
applichiamo il teorena del valor medio per il calcolo dell’integrale:
Teorema Se f (x) é una funzione continua, e g(x)
é continua e non cambia
segno nell’intervallo
R
R
[a, b], allora esiste un punto ξ ∈ [a, b], tale che ab f (x)g(x)dx = f (ξ) ab g(x)dx
osserviamo che la parte t(t − 1) in [0, 1] non cambia segno, e se assumiamo che f ” sia
continua, allora
Z 1
h3
h3
RT =
f ”(ξ(a + th))
t(t − 1)dt = − f ”(η)
2
12
0
dove abbiamo posto η = ξ(a + th).
dimostrazione nel caso n=2 Per n=2 si ha la formula si Simpson che ha grado di
precisione q = 3 cioé integra esattamente polinomi di terzo grado. Infatti se consideriamo
un polimnomio p3 (x) lo possiamo scrivere nella forma
p3 (x) = Ax3 + p2 (x)
Z b
a
p3 (x)dx = A
Z b
a
x3 dx +
Z b
a
p2 (x)dx
sappiamo che per sua natura integra esattamente polinomi di secondo grado. Misuriamo
allora l’errore di integrazione di questa formula di quadratura:
I(p3 ) − S2 (p3 ) = A[I(x3 ) − S2 (x3 )] + [I(p2 ) − S2 (p2 )]
sappiamo che Simpson integra in modo esatto la parte quadratica del polinomio p3 , quindi
la precisione risulta di grado 3 se integra in modo esatto x3 , verifichiamolo:
S2 (x3 ) =
h 3
a+b 3
b−a 3 1
[a + 4(
) + b3 ] =
[a + (a + b)3 + b3 ] =
3
2
6
2
b−a 3
1
b−a 3
[2a + (a + b)3 + 2b3 ] =
3[a + a2 b + ab2 + b3 ] = [b4 − a4 ] = I(x3 )
12
12
4
Quindi
il metodo di quadratura di Simpson integra in modo esatto polinomi di terzo grado
Rb
IV
p
(x)dx
= S2 (p3 ). Vale inoltre la seguente stima dell’errore di integrazione: se f ∈ C[a,b]
a 3
allora esiste un punto η ∈ [a, b] tale che
=
RT = −
1 5 IV
h f (η)
90
η ∈ [a, b]
2011/01/12
31
Osservazione
Se con s si indica il denominatore comune per i coefficienti frazionari ωi e indichiamo con
σi = sωi , i = 0, 1, . . . , n i conseguenti numeri interi, allora la formula di Newton-Cotes
si puó riscrivere come:
Z b
b−aX
f (x)dx '
σi f (xi )
ns i=0
a
La seguente tabella riporta i coefficienti per le formule di newton-Cotes per n = 1, . . . , 8;
si osservi che σi = σn−i per i = 0, . . . , n/2, per n ≥ 8 alcuni coefficienti assumono valori
negativi.
n
σi
ns
Errore
nome
1
2
3
4
5
6
7
8
1,1
1, 4, 1
1, 3, 3, 1
7, 32, 12, 32, 7
19, 75, 50, 50, 75, 19
41 216 27 272. . .
751 3577 1323 2989 . . .
989 5888 -928 10496 -4540 . . .
2
6
8
90
288
840
17280
28350
−1/12h3 f ”(η)
−1/90h5 f IV (η)
−3/80h5 f IV (η)
−8/945h7 f V I (η)
. . . h7 f V I (η)
. . . h9 f V III (η)
. . . h9 f V III (η)
. . . h11 f X (η)
Trapezi
Simpson
Cavalieri-Simpson
Milne
Weddle
2011/01/12
32
here
73.0693
50
45
40
trapezi composito
35
30
25
20
15
10
5
0
−3
−2
−1
0
72.7344
1
2
3
Formule composite Consistono nel suddividere l’intervallo [a, b] in sottointervalli in
genereale di uguale ampiezza [xi , xi+1 ] per i = 0, 1, . . . , m − 1, e in ciascuno di essi applicare una formula di quadratura di grado basso.
Formula composita dei Trapezi
Se si usa la formula dei Trapezi sul sottointervallo [xi , xi+1 ] si ottiene:
Z xi+1
xi
f (x)dx =
h3
h
[f (xi ) + f (xi+1 )] − f ”(ηi )
2
12
3
con h = xi+1 − xi e xi < ηi < xi+1 . L’errore di troncamento − h12 f ”(ηi ) é detto errore
locale di trocamento
Per l’intervallo [a, b] suddiviso in m sottointervalli si ottiene
Z b
a
f (x)dx =
m−1
X Z xi+1
i=0
xi
f (x)dx =
1
1
= h( f (x0 ) + f (x1 ) + f (x2 ) + . . . + f (xm−1 ) + f (xm )) + RT
2
2
L’errore di troncamento globale RT é dato dalla somma degli errori locali cioé
RT = −
X
h3 m−1
f ”(ηi )
12 i=0
si noti che b − a = mh, e perció
RT = −
b−a 2
h
12
Pm−1
i=0
f ”(ηi )
m
Se f ” é continua in [a, b], allora esiste un η in questo intervallo, tale che
X
1 m−1
f ”(ηi ) = f ”(η)
m i=0
da cui l’errore di troncamento totale per la formula dei Trapezi composita risulta
−
b−a 2
h f ”(η).
12
In particolare si osservi che aumentando m poiché h =
lim RT = 0
h→0
b−a
m
il valore di h diminuisce anzi
2011/01/12
33
here
73.0693
50
45
40
Simpson composito
35
30
25
20
15
10
5
0
−3
−2
−1
0
72.7344
1
2
3
perció piú é fine la suddivisione dell’intervallo e migliore risulta l’approssimazione dell’integrale.
Formula composita di Simpson
Se m = 2k, cioé l’intervallo [a, b] é suddiviso in un numero pari di sottointervalli, allora
l’integrale in ogni sottointervallo [x2i , x2i+2 ] puó essere calcolato con la formula di Simpson
Z x2i+2
x2i
f (x)dx =
h
[f (x2i ) + 4f (x2i+1 ) + f (x2i+2 )]
3
−
con h =
(x2i+2 −x2i )
2
h5 IV
f (ηi )
90
e x2i < ηi < x2i+2 . Per l’intero intervallo [a, b] si ottiene
Z b
a
f (x)dx =
k−1
X Z x2i+2
i=0
x2i
f (x)dx =
h
[f (x0 ) + 4f (x1 ) + 2f (x2 ) + . . .
3
+2f (x2i ) + 4f (x2i+1 ) + 2f (x2i+2 ) + . . . +
+4f (x2k−1 ) + f (x2k ) + RT
dove
RT = −
X
h5 k−1
f IV (ηi )
90 i=0
Per le stesse argomentazioni usate per la formula dei Trapezi, l’errore si puó scrivere
RT = −
b − a 4 IV
h f (η)
180
dove η ∈ [a, b], sotto la condizione che f 4 sia continua in [a, b].
Esempio
Si calcola
Z 1
1
dx
0 1+x
usando le formule composite dei Trapezi e di Simpson. Scegliamo h = 1, .5, .25, 0.125 e
confrontiamo i risultati con il valore esatto log 2 ' 0.693147 Si ottiene
2011/01/12
m
h
34
T(h)
abs(T(h)-log(2))
S(h)
abs(S(h)-log2)
1 1
0.750000 0.056853
2 0.5
0.708333 0.015186
0.694444 0.001297
4 0.25
0.697024 0.003877
0.693254 0.000107
8 0.125 0.694122 0.000975
0.693155 0.000008
Si noti che per la formula dei Trapezi poiché RT = O(h2 ), l’errore T(h)-log(2) dovrebbe
essere diviso per un fattore 4 quando h si dimezza; analogamente per Simpson essendo
RT = O(h4 ), l’errore S(h)-log2 dovrebbe essere diviso per 16 quando h si dimezza; i valori
in tabella rispecchiano questo andamento.
Esercizio
Si determini il passo da utilizzare nella formula dei Trapezi composita, affinché la stima
dell’integrale
Z 1
1
dx
(x
+
1)
0
sia approssimata alla tolleranza 0.5 × 10−2 .
Formule Adattive
Il passo di integrazione h di una formula di quadrature puó essere scelto in modo da
garantire che l’errore sia inferiore ad una tolleranza ² > 0 prestabilita. Indichiamo con IA
il valore approssimato calcolato dell’integrale si vuole
|
Z b
a
f (x)dx − IA | ≤ ²
Occorre stabilire un criterio per determinare la stima dell’errore di integrazione, esistono
due approcci uno non adattativo e uno adattivo. In un approccio non adattivo i punti in
cui si valuta la funzione f (x) sono scelti senza tener conto del comportamento della funzione integranda. In questo caso se usassimo la formula di Simpson composita basterebbe
richiedere che
b−a 4
h maxx∈[a,b] |f IV (x)| < ²,
180
dove f 4 indica la derivata quarta. Quindi basterebbe scegliere h sufficientemente piccolo in
modo da compensare l’apporto della derivata quarta. D’altra parte se f 4 in valore assoluto
fosse grande solo in una piccola porzione dell’intervallo di integrazione si corre il rischio
di eseguire troppe valutazioni della f anche nelle parti in cui la funzione ha un comportamento lineare. In un approccio adattivo si utilizza una distribuzione non uniforme dei
sotto-intervalli nell’intervallo [a, b] in modo da garantire la stessa accuratezza della formula
composita , ma con un numero inferiore di intervalli e quindi di valutazioni della f . A tal
fine serviranno uno stimatore dell’errore di quadratura ed una procedura che modifichi il
passo di integrazione h conseguentemenete al soddisfacimento della tolleranza richiesta. Si
suddivide l’intervallo di integrazione in sottointervalli e si applica ricorsivamente a questi
una formula di quadratura, sfruttando una stima di arresto. Nella prossima sezione vedremo una tecnica nota come estrapolazione di Richardson che deriva da un risultato piú
generale da cui si puo estrarre una stima per l’errore di integrazione.
Estrapolazione di Richardson
E’ possibile determinare in modo automatico il numero m di sottointervalli in cui suddividere l’intero intervallo [a, b], per ottenere una stima accurata a meno di una certa
tolleranza. Il procedimento si basa sulla possibilitá di stimare l’errore di integrazione RT .
2011/01/12
35
Ció puó essere fatto confrontando il valore dell’integrale ottenuto mediante la suddivisione
in m sottointervalli, Im , con il valore I2m ottenuto con il doppio degli intervalli. Sia I
il valore esatto dell’integrale si puó dimostrare che per una formula di Newton-Cotes di
precisione s si ottiene la seguente stima dell’errore
|I − I2m | '
I2m − Im
2s+1 − 1
Si puó quindi innescare una procedura di raffinamenti successivi di [a, b] fino a che
I2m − Im
< tol
2s+1 − 1
Caso Trapezi
Indichiamo con T (h) la formula dei trapezi composta con h =
Z b
a
f (x)dx − T (h) =
b−a
m ;
allora vale
h4 (3)
h2 (1)
(f (b) − f (1) (a)) −
(f (b) − f (3) (a))+
12
720
h6
(f (5) (b) − f (5) (a)) + . . . + c2k h2k (f 2k−1 (b) − f 2k−1 (a)) + O(h2k+2 )
30240
nell’ipotesi che la f sia derivabile in [a, b] almeno 2k + 2 volte.
Corollario
Assumendo che la f (x) sia derivabile almeno 4 volte su [a, b], si ha:
Z b
a
T (h/2) − T (h)
h
+ O(h4 )
f (x) − T ( ) '
2
3
dimostrazione:
dal teorema si ha:
Z b
a
f (x) − T (h) = c2 h2 + O(h4 )
e se il passo usato é h/2
Z b
a
f (x) − T (h/2) = c2 (h/2)2 + O(h4 )
questo perché c2 é indipendente da h. Eliminando il termine in h2 fra le due equazioni, si
ottiene
ÃZ
! Z
b
4
a
da cui
3
f (x) − T (h/2) =
ÃZ
b
a
b
a
f (x)dx − T (h) + O(h4 )
!
f (x) − T (h/2)
= T (h/2) − T (h) + O(h4 )
come si voleva provare.
Da questo si puó ricavare una formula che fornisce una approssima dell’integrale del quarto
ordine, cioé
Z b
4T (h/2) − T (h)
f (x)dx =
+ O(h4 )
3
a
2011/01/12
36
Esempio
Stimiamo
Z 1
0
2
e−x dx
usando la formula composita dei trapezi con h = 1, 0.5, 0.25. La stima viene poi migliorata
mediante estrapolazione di Richardson. Il valore esatto alle prime 6 cifre significative é
0.746824.
Rb
h
T(h)
Estrap.
|
1
0.5
0.25
0.683939
0.731370
0.742984
0.747180
0.746855
0.062884
0.015453
0.003839
a
f dx − T (h)|
|
Rb
a
f dx − Estrap.|
0.00035642
0.0000313797
Il corollario fornisce una stima del termine principale dell’errore. Si puó progettare un
metodo iterativo che dimezza il passo fino a che
|
T (h/2) − T (h)
| ≤ tol
3
quando questo si verifica sará anche
Z b
a
f (x)dx − T (h/2)| ≤ tol
Questo metodo iterativo puó essere applicato in modo adattivo.
2011/01/12
37
Caso Simpson
Se calcoliamo l’integrale con il metodo di Simpson con passo h = (b − a)/2 : S(h) e un
Simpson composto con passo h/2:
Z b
a
Z b
a
f (x)dx = S(h) −
f (x)dx = S(h/2) −
= S(h/2) −
procedendo
S(h) − S(h/2) '
h5 (4)
f (η);
90
b−a
(h/2)4 f (4) (η) =
180
1 h5
f (η).
16 90
h5 (4)
1
f (η)(1 − )
90
16
da cui
1 h5 (4)
1
[S(h) − S(h/2)] '
f (η)
15
16 90
sostituendo nell’equazione precedente si ottiene
|
Z b
a
f (x)dx − S(h/2)| ' |
1
[S(h/2) − S(h)] |
15
quindi c’é la possibiltá di innescare un procedimento iterativo in cui si dimezza il passo
fino a che
1
| [S(h/2) − S(h)] | ≤ tol
15
quando ció si verifica allora
|
Z b
a
f (x)dx − S(h/2)| ≤ tol
Metodo di Simpson Adattivo
Per realizzare una routine che implementa un metodo adattivo si deve specificare l’intervallo
[a, b], fornire una routine per la valutazione della f (x) per x ∈ [a, b] e scegliere una tolleranza tol. La routine deve calcolare un valore approssimato IA dell’integrale in modo che
|
Z b
a
f (x)dx − IA | ≤ tol
la routine deve anche essere in grado di determinare se la richiesta tolleranza non sia
raggiungibile nei limiti definiti dal massimo numero di livelli di ricorsione. Durante
l’esecuzione, ogni intervallo viene determinato per bisezione di un intervallo ottenuto
precedentemente durante il calcolo. Il numero effettivo di sottointervalli, cosı́ come la
loro posizione e ampiezza dipende dalla f (x) e dalla tolleranza tol. Lo schema piú classico applica ad ogni sottointervallo [xi , xi+1 ] la formula di Simpson semplice e la formula
di Simpson composta con m = 4, S(hi /2) ( che equivale a due Simpson semplici applicati rispettivamente a [xi , xi + hi /2] e [xi + hi /2, xi+1 ]. Entrambe S(hi ) e S(hi /2) sono
approssimazioni per
Z
IAi '
xi+1
xi
f (x)dx.
Queste due approssimazioni servono per ottenere una stima dell’errore di integrazione.
Se la tolleranza é raggiunta , S(hi /2) (o l’estrapolazione di Richardson relativa) viene
presa come valore dell’integrale su quell’intervallo. Se la tolleranza non viene raggiunta
2011/01/12
38
, il sottointervallo viene suddiviso a metá e il procedimento viene ripetuto su ognuno dei
sottointervalli piú piccoli.
Utilizzando il raffinamento automatico di Richardson, determinate il raffinamento
dell’intervallo di definizione del seguente integrale utilizzando la formula dei Trapezi composita in modo da ottenere la seguente limitazione dell’errore
1
|RT | ≤ 10−3
2
per il calcolo di
I=
Z 1
0
2
e−x
La function quad(f un, a, b) calcola una approssimazione dell’integrale della funzione
f un utilizzando il metodo di Simpson adattivo: Dal manuale MatLab:
QUAD
Numerically evaluate integral, adaptive Simpson quadrature.
Q = QUAD(FUN,A,B) tries to approximate the integral of scalar-valued
function FUN from A to B to within an error of 1.e-6 using recursive
adaptive Simpson quadrature. FUN is a function handle. The function
Y=FUN(X) should accept a vector argument X and return a vector result
Y, the integrand evaluated at each element of X.
Q = QUAD(FUN,A,B,TOL) uses an absolute error tolerance of TOL
instead of the default, which is 1.e-6. Larger values of TOL
result in fewer function evaluations and faster computation,
but less accurate results. The QUAD function in MATLAB 5.3 used
a less reliable algorithm and a default tolerance of 1.e-3.
Q = QUAD(FUN,A,B,TOL,TRACE) with non-zero TRACE shows the values
of [fcnt a b-a Q] during the recursion. Use [] as a placeholder to
obtain the default value of TOL.
[Q,FCNT] = QUAD(...) returns the number of function evaluations.
Use array operators .*, ./ and .^ in the definition of FUN
so that it can be evaluated with a vector argument.
Notes:
Function QUADL may be more efficient with high accuracies and smooth
integrands.
Function QUADV vectorizes QUAD for array-valued FUN.
Example:
Q = quad(@myfun,0,2);
where myfun.m is the M-file function:
%-------------------%
function y = myfun(x)
y = 1./(x.^3-2*x-5);
%-------------------%
or, use a parameter for the constant:
Q = quad(@(x)myfun2(x,5),0,2);
2011/01/12
39
where myfun2 is the M-file function:
%----------------------%
function y = myfun2(x,c)
y = 1./(x.^3-2*x-c);
%----------------------%
Class support for inputs A, B, and the output of FUN:
float: double, single
See also quadv, quadl, dblquad, triplequad, trapz, function_handle.
Il metodo dei trapezi e’ invece implementato nella seguente function:
TRAPZ
Z =
the
for
Trapezoidal numerical integration.
TRAPZ(Y) computes an approximation of the integral of Y via
trapezoidal method (with unit spacing). To compute the integral
spacing different from one, multiply Z by the spacing increment.
For vectors, TRAPZ(Y) is the integral of Y. For matrices, TRAPZ(Y)
is a row vector with the integral over each column. For N-D
arrays, TRAPZ(Y) works across the first non-singleton dimension.
Z = TRAPZ(X,Y) computes the integral of Y with respect to X using
the trapezoidal method. X and Y must be vectors of the same
length, or X must be a column vector and Y an array whose first
non-singleton dimension is length(X). TRAPZ operates along this
dimension.
Z = TRAPZ(X,Y,DIM) or TRAPZ(Y,DIM) integrates across dimension DIM
of Y. The length of X must be the same as size(Y,DIM)).
Example: If Y = [0 1 2
3 4 5]
then trapz(Y,1) is [1.5 2.5 3.5] and trapz(Y,2) is [2
8];
Class support for inputs X, Y:
float: double, single
See also sum, cumsum, cumtrapz, quad.
Lewis Fry Richardson (1881-1953) nacque a Newcastle in Gran Bretagna terminó i suoi
studi a King’s College a Cambridge nel 1903. Ricoprı́ varie cariche nell’industria e nell’universitá,
fu il primo a suggerire di usare tecniche matematiche per fare previsioni metereologiche ,
mediante la risoluzione delle equazioni dei fluidi che dovrebbero governare la temperatura,
la pressione atmosferica ecc. Fece questo negli anni venti, molto prima dello sviluppo
dei moderni computer ad alta velocitá e fu a causa di questo che sviluppó la nozione di
metodi di estrapolazione per l’approssimazione numerica accurata di soluzioni basate su
approssimazioni meno precise.
2011/01/12
40
Esercizi di preparazione alla II prova parziale
1. Applica il metodo dei trapezi composto con passo h1 =
stima del seguente integrale
Z
1
0
1
4
e h2 =
1
8
per fornire una
x(1 − x2 )dx
cerca di fornire una stima dell’errore di integrazione.
2. Dato il seguente integrale
Z 1
−1
1
dx
1 + x2
prova a determinare il passo di integrazione che si deve usare per il metodo dei
trapezi composto affinché l’errore di integrazione sia inferiore a 12 10−1
3. Poiché l’area del cerchio unitario é pari a π, segue che
π
=
2
Z 1 p
−1
1 − x2 dx
Allora si puó approssimare π mediante una approssimazione di questo integrale.
Applica il metodo di Simpson per calcolare valori approssimati di π commenta i
risultati.