1 Introduzione al problema - Dipartimento di Matematica e ...
Transcript of 1 Introduzione al problema - Dipartimento di Matematica e ...
INTRODUZIONE AL PROBLEMA 1di Simone BIANCO
1 Introduzione al problema
Lo scopo della tesi svolta e quello di ricalibrare il colore nelle immagini fo-
tografiche, ovvero: si supponga di avere un’immagine fotografica e che i colori
di questa differiscano dagli originali, quello che ci si propone di fare e andare
a correggerli di modo che l’immagine fotografata risulti il piu possibile uguale
all’originale. Si prenda ad esempio la Figura 1.1, dove l’immagine a sinistra e
quella originale e quella a destra quella fotografata:
Figura 1.1: immagine originale e fotografata
da un confronto delle due figure si puo vedere immediatamente che i colori
sono alquanto differenti.
La correzione dei colori nelle immagini fotografate viene effettuata grazie
alla seguente idea: si e pensato di correggere queste immagini con l’ausilio
di una tavola di test di colori (ognuno dei quali rappresentato da una terna
INTRODUZIONE AL PROBLEMA 2di Simone BIANCO
di numeri, ovvero dalle proprie componenti rispetto alla base nello spazio dei
colori costituita da rosso, verde e blu (R,G,B)) procedendo al seguente modo:
al momento della cattura dell’immagine, oltre ad effettuare una fotografia
all’immagine stessa, se ne effettua un’altra alla tavola dei colori di test scelta
per la correzione nelle stesse identiche condizioni ambientali. Si riporta in
Figura 1.2 un esempio di tavola di test da 27 colori:
Figura 1.2: tavola di test da 27 colori
Sia ora C(R,G,B) la matrice contenente i coefficienti dei colori originali
della tavola di test rispetto alla base (R,G,B) e sia C ′(R,G,B) quella con-
tenente i coefficienti dei colori fotografati. Quello che si vuole andare a fare
e costruire una funzione I che mappi i colori originali in quelli fotografati
(I : C(R,G,B) → C ′(R,G,B)), invertirla e applicare I−1 ad ogni colore
dell’immagine fotografata in modo da poter risalire al colore originale.
Da quanto appena esposto e chiaro cosa bisogna implementare nel pro-
gramma: un buon metodo interpolatorio e un metodo di inversione della fun-
INTRODUZIONE AL PROBLEMA 3di Simone BIANCO
zione I.
Per quanto riguarda il metodo interpolatorio si e utilizzato il metodo di
interpolazione lineare di Lagrange; certamente utilizzando il metodo “totale”
i risultati ottenuti sarebbero stati migliori, ma lavorando con set di 125 nodi i
tempi di calcolo sarebbero stati troppo lunghi. Pertanto si e dovuto sviluppare
una modalita per andare a cercare all’interno della tavola di test dei colori i 2
valori migliori per ogni componente tra cui effettuare la suddetta interpolazione
lineare.
Si riportano nel seguente paragrafo 2 alcuni esempi di interpolazione lineare
e totale nel caso mono, bi e tri–dimensionale; per quanto riguarda invece la
ricerca di zeri di sistemi di equazioni non lineari si rimanda al paragrafo 3.
2 ESEMPI DI INTERPOLAZIONE DI LAGRANGE 4
2 Esempi di interpolazione di Lagrange
2.1 Interpolazione lineare tra due punti (caso monodimensionale)
Siano xi i punti da interpolare e siano yi = f(xi) i rispettivi valori delle y:
x0 = 1 f(x0) = y0 = 2x1 = 2 f(x1) = y1 = 3
si calcolano i polinomi fondamentali di Lagrange:
lj(x) =
n∏i=0,i6=j
(x− xi)
n∏i=0,i6=j
(xj − xi)
(2.1.1)
l0(x) = −x− 2
1− 2= 2− x
(si noti che l0(x) vale 1 per x = x0 e 0 per x = x1)
l1(x) =x− 1
2− 1= x + 1
(in questo caso l1(x) vale 0 per x = x0 e 1 x = x1).
Si calcola il polinomio interpolatore:
Pn(x) =n∑
j=0
yjlj(x) (2.1.2)
P1(x) =1∑
j=0
yjlj(x) = 2(2− x) + 3(x− 1) = x + 1
Andando a rappresentare i nodi e il polinomio interpolatore su un grafico
si ottiene la Figura 2.1.1 (dove i nodi sono rappresentati dai pallini rossi)
2 ESEMPI DI INTERPOLAZIONE DI LAGRANGE 5
Figura 2.1.1: interpolazione monodimensionale di Lagrange su due punti
2.2 Interpolazione monodimensionale su tre punti
In questo caso sono possibili due tipi di interpolazioni: si puo fare un’interpolazione
“totale” su tutti e tre i punti oppure un’interpolazione lineare tra i punti x0 e
x1 e poi tra i punti x1 e x2; siano dati i seguenti nodi e i valori su essi assunti
dalla funzione f :x0 = 1 f(x0) = y0 = 2x1 = 2 f(x1) = y1 = 3x2 = 3 f(x2) = y2 = 1
si inizia con la prima possibilita esposta: innanzitutto si calcono i polinomi
fondamentali di Lagrange con la formula 2.1.1:
l0(x) =(x− 2)(x− 3)
2
(si noti che l0(x) vale 1 per x = x0 e 0 per x = x1 e x = x2)
l1(x) = −(x− 1)(x− 3)
2 ESEMPI DI INTERPOLAZIONE DI LAGRANGE 6
(l1(x) vale 1 per x = x1 e 0 per x = x0 e x = x2)
l2(x) =(x− 1)(x− 2)
2
(l2(x) vale 1 per x = x2 e 0 per x = x0 e x = x1)
Ora si puo procedere e calcolare il polinomio interpolatore con la formula
2.1.2:
P2(x) =2∑
j=0
yjlj(x) =−3x2 + 11x− 4
2
Andando a rappresentare i nodi e il polinomio interpolatore su un grafico
si ottiene la Figura 2.2.1 (dove i nodi sono rappresentati dai pallini rossi):
Figura 2.2.1: interpolazione monodimensionale (totale) di Lagrange su tre punti
Si passi ora alla seconda modalita esposta, ovviamente si ottengono due
polinomi interpolatori lineari diversi per gli intervalli I1 = [x0, x1] e I2 = [x1, x2]
che sono rispettivamente:
P1(I1) = x + 1
2 ESEMPI DI INTERPOLAZIONE DI LAGRANGE 7
e
P1(I2) = 7− 2x
Andando a rappresentare i nodi e il polinomio interpolatore su un grafico
si ottiene la Figura 2.2.2 (dove i nodi sono rappresentati dai pallini rossi):
Figura 2.2.1: interpolazione monodimensionale (lineare) di Lagrange su tre punti
2.3 Interpolazione lineare bidimensionale su 22 punti
Ora in nodi non sono piu punti in R ma punti in R2:
f(x0, y0) = f(0, 0) = 1 f(x0, y1) = f(0, 1) = 2f(x1, y0) = f(1, 0) = 1 f(x1, y1) = f(1, 1) = 2
Si procede col calcolare i polinomi fondamentali di Lagrange associati ai nodi
xi come negli esempi precedenti con la formula 2.1.1:
l0(x) = 2− x
l1(x) = x− 1
2 ESEMPI DI INTERPOLAZIONE DI LAGRANGE 8
successivamente si passa a calcolare quelli associati ai nodi yi con la seguente
formula:
lj(y) =
n∏i=0,i6=j
(y − yi)
n∏i=0,i6=j
(yj − yi)
(2.3.1)
e cioe
l0(y) =3− y
2
l1(y) =y − 1
2
A questo punto si calcolano i polinomi li,j(x, y) = li(x)lj(y):
l0,0(x, y) =(2− x)(3− y)
2; l0,1(x, y) =
(2− x)(y − 1)
2
l1,0(x, y) =(x− 1)(3− y)
2; l1,1(x, y) =
(x− 1)(y − 1)
2
Infine si calcola il polinomio interpolatore richiesto con la formula seguente:
Pn,m(x, y) =n∑
i=0
m∑j=0
f(xi, yj)li,j(x, y) (2.3.2)
cioe
P1,1(x, y) = f(x0, y0)l0,0 + f(x0, y1)l0,1 + f(x1, y0)l1,0 + f(x1, y1)l1,1
ovvero nel caso in esame
P1,1(x, y) =1 + y
2.
Andando a rappresentare i nodi e il polinomio interpolatore su un grafico
si ottiene la Figura 2.3.1 (dove i nodi sono rappresentati dai pallini rossi):
2 ESEMPI DI INTERPOLAZIONE DI LAGRANGE 9
Figura 2.3.1: interpolazione bidimensionale di Lagrange su 22 punti
Supponiamo invece che i nodi fossero stati i seguenti:
f(x0, y0) = f(0, 0) = 1 f(x0, y1) = f(0, 1) = 3f(x1, y0) = f(1, 0) = 1 f(x1, y1) = f(1, 1) = 2
come polinomio interpolatore si sarebbe ottenuto il seguente:
P1,1(x, y) =3y + x− xy − 1
2.
Andando a rappresentare i nuovi nodi con il nuovo polinomio interpolatore
si ottiene la Figura 2.3.2:
2 ESEMPI DI INTERPOLAZIONE DI LAGRANGE 10
Figura 2.3.2: interpolazione bidimensionale di Lagrange su 22 punti
2.4 interpolazione bidimesionale su 32 punti
Siano assegnati i seguenti nodi con rispettivi valori assunti dalla funzione f
sugli stessi:
f(x0, y0) = f(0, 0) = 1 f(x1, y0) = f(1, 0) = 2 f(x2, y0) = f(2, 0) = 2f(x0, y1) = f(0, 1) = 0 f(x1, y1) = f(1, 1) = 1 f(x2, y1) = f(2, 1) = 1f(x0, y2) = f(0, 2) = 1 f(x1, y2) = f(1, 2) = 2 f(x2, y2) = f(2, 2) = 0
Come nel caso del paragrafo 1.2 si puo procedere in due modi distinti: si puo ef-
fettuare facendo un’interpolazione “totale” su tutti i nodi oppure un’interpolazione
lineare su ogni regione del tipo [xi, xi+1] × [yi, yi+1]; si proceda con il primo
metodo esposto; usando le formule 2.1.1 e 2.3.1 per calcolare i polinomi fon-
damentali di Lagrange si ottengono:
l0(x) =(x− 1)(x− 2)
2; l1(x) = x(2− x); l2(x) =
x(x− 1)
2
e
l0(y) =(y − 1)(y − 2)
2; l1(y) = y(2− y); l2(y) =
y(y − 1)
2.
2 ESEMPI DI INTERPOLAZIONE DI LAGRANGE 11
Da questi si ottengono i seguenti li,j(x, y) = li(x)lj(y):
l0,0(x, y) = (x−1)(x−2)(y−1)(y−2)2
; l1,0(x, y) = x(2−x)(y−1)(y−2)2
;
l2,0(x, y) = x(x−1)(y−1)(y−2)4
; l0,1(x, y) = (x−1)(x−2)y(2−y)2
;
l1,1(x, y) = x(2−x)y(2−y)1
; l2,1(x, y) = x(x−1)y(2−y)2
;
l0,2(x, y) = (x−1)(x−2)y(y−1)4
; l1,2(x, y) = x(2−x)y(2−y)2
;
l2,2(x, y) = x(x−1)y(y−1)4
.
Calcolando il polinomio interpolatore con la formula 2.3.2 si ottiene cosı:
P2,2(x, y) =1
4(−3x2y2 + 5x2y + 5xy2 − 4x2 + 2y2 − 11xy + 12x− 2y)
Andando a rappresentare i nodi e il polinomio interpolatore su un grafico
si ottiene la Figura 2.4.1 (dove i nodi sono rappresentati dai pallini rossi):
Figura 2.4.1: interpolazione bidimensionale (totale) di Lagrange su 32 punti
Per il secondo metodo esposto non si riportano i conti ma solamente il
risultato finale nella Figura 1.4.2:
2 ESEMPI DI INTERPOLAZIONE DI LAGRANGE 12
Figura 2.4.2: interpolazione bidimensionale (lineare) di Lagrange su 32 punti
2.5 Iterpolazione lineare tridimensionale su 23 punti
Sia dato il seguente set di dati:
f(x0, y0, z0) = f(0, 0, 0) = 0; f(x0, y0, z1) = f(0, 0, 1) = 0;f(x0, y1, z0) = f(0, 1, 0) = 2; f(x0, y1, z1) = f(0, 1, 1) = 3;f(x1, y0, z0) = f(1, 0, 0) = 1; f(x1, y0, z1) = f(1, 0, 1) = 1;f(x1, y1, z0) = f(1, 1, 0) = 0; f(x1, y1, z1) = f(1, 1, 1) = 2 .
Si calcolino ora i polinomi fondamentali di Lagrange associati ai nodi xi con
la formula 2.1.1:
l0(x) = 1− x; l1(x) = x
quelli associati ai nodi yj con la formula 2.3.1:
l0(y) = 1− y; l1(y) = y
2 ESEMPI DI INTERPOLAZIONE DI LAGRANGE 13
e quelli associati ai nodi zk con la seguente formula:
lj(z) =
n∏i=0,i6=j
(z − zi)
n∏i=0,i6=j
(zj − zi)
(2.5.1)
ovvero:
l0(z) = 1− z; l1(z) = z .
Si procede col calcolare tutti i prodotti seguenti:
li,j,k(x, y, z) = li(x)lj(y)lk(z) (2.5.2)
Infine si calcola il polinomio interpolatore con la seguente formula:
Pn,m,r(x, y, z) =n∑
i=0
m∑j=0
r∑k=0
f(xi, yj, zk)li,j,k(x, y, z) =
=n∑
i=0
m∑j=0
r∑k=0
f(xi, yj, zk)li(x)lj(y)lk(z) (2.5.3)
che nel caso in esame risulta
P1,1,1(x, y, z) = −xyz − 3xy + 3yz + x + 2y .
Facendo disegnare il precedente polinomio su un grafico facendo colorare ogni
punto del cubo (i cui vertici sono i nodi da interpolare) con colori diversi in base
al valore assunto dalla funzione nel determinato punto si ottengono le Figura
2.5.1 e 2.5.2 (dove a colori freddi corrispondono valori minori della funzione e
a colori caldi valori maggiori):
2 ESEMPI DI INTERPOLAZIONE DI LAGRANGE 14
Figura 2.5.1: interpolazione tridimensionale (lineare) di Lagrange su 23 punti (sulla superficie del cubo)
Figura 2.5.2: interpolazione tridimensionale (lineare) di Lagrange su 23 punti (all’interno del cubo)
3 RISOLUZIONE DI EQUAZIONI NON LINEARI 15
3 Risoluzione di equazioni non lineari
Il problema che ci si accinge ad affrontare e la ricerca di soluzioni di equazioni
(e di sistemi di equazioni) non lineari
f(x) = 0 .
Purtroppo la non linearita della f(x) introduce particolari difficolta, soprat-
tutto in relazione al problema della convergenza dei metodi di risoluzione, che
sono necessariamente di tipo iterativo.
Si iniziera la trattazione del problema per una singola equazione non lineare;
si procedera poi col generalizzare gli stessi metodi per sistemi di equazioni non
lineari.
Partendo dall’approssimazione iniziale x0 di una radice dell’equazione non
lineare f(x) = 0, graficamente si puo pensare di generare i valori successivi
x1, x2, . . . , xn nel modo seguente:
Figura 3.1: generazione di una successione {xn} convergente a ξ.
Ossia, si conduce dal punto iniziale (x0, y0), y0 = f(x0), sulla curva y = f(x)
3 RISOLUZIONE DI EQUAZIONI NON LINEARI 16
una retta con pendenza k0, e si prende come nuova (e migliore) approssimazione
x1 l’intersezione di questa retta con l’asse x. Si riparte poi dal nuovo punto
(x1, y1), y1 = f(x1), con una seconda retta con pendenza k1, e si determina
l’intersezione x2 di quest’ultima con l’asse x, e cosı via. In altri termini, ad
ogni passo si linearizza localmente il problema iniziale f(x) = 0, e come nuova
approssimazione della radice ξ prendiamo la radice dell’equazione lineare
yn + kn(x− xn) = 0 n = 0, 1, 2, . . .
cioe
xn+1 = xn −f(xn)
kn
n = 0, 1, 2, . . . (3.1)
Le direzioni k0, k1, k2, . . . possono essere scelte in vari modi. Ci si limitera
solamente alla trattazione del metodo di Newton-Raphson (o delle tangenti)
in quanto e quello utilizzato nella risoluzione dei sistemi non lineari di questo
elaborato.
3.1 Metodo delle tangenti o di Newton-Raphson
In questo metodo la scelta delle direzioni kn e data da kn = f ′(xn). Ovviamente
e indispensabile l’esistenza di f ′(xn) per ogni n. Il processo iterativo diviene
pertanto:
xn+1 = xn −f(xn)
f ′(xn)(3.1.1)
La generalizzazione di questo metodo a sistemi di equazioni non lineari
e abbastanza semplice. A tale fine si consideri un’approssimazione x(i) =
(x(i)1 , x
(i)2 , . . . , x
(i)n )T della radice ξ = (ξ1, ξ2, . . . , ξn)T . Si supponga che ogni
3 RISOLUZIONE DI EQUAZIONI NON LINEARI 17
singola funzione fj del sistemaf1(x1, x2, . . . , xn) = 0f2(x1, x2, . . . , xn) = 0. . .fn(x1, x2, . . . , xn) = 0
sia derivabile due volte, con derivate (parziali) seconde continue, in un intorno
di ξ contenente x(i), in modo che risultino validi i seguenti sviluppi in serie di
Taylor:f1(x
(i)) + (ξ1 − x(i)1 )
(∂f1
∂x1
)x=x(i)
+ · · ·+ (ξ1 − x(i)1 )
(∂f1
∂x1
)x=x(i)
+ term. ord.2 = 0
f2(x(i)) + (ξ1 − x
(i)1 )
(∂f2
∂x1
)x=x(i)
+ · · ·+ (ξ1 − x(i)1 )
(∂f2
∂x1
)x=x(i)
+ term. ord.2 = 0
. . .
fn(x(i)) + (ξ1 − x(i)1 )
(∂fn
∂x1
)x=x(i)
+ · · ·+ (ξ1 − x(i)1 )
(∂fn
∂x1
)x=x(i)
+ term. ord.2 = 0
Trascurando i termini di ordine 2 si ottiene un sistema lineare la cui soluzione,
se unica, non sara ξ = (ξ1, ξ2, . . . , ξn)T bensı x(i+1) = (x(i+1)1 , x
(i+1)2 , . . . , x
(i+1)n )T :
J (i)h(i) = −f(x(i))x(i+1) = x(i) + h(i) per i = 0, 1, 2, . . .
(3.1.2)
La matrice
J (i) = J(x(i)) =
(∂f1
∂x1
)x=x(i)
(∂f1
∂x2
)x=x(i)
. . .(
∂f1
∂xn
)x=x(i)(
∂f2
∂x1
)x=x(i)
(∂f2
∂x2
)x=x(i)
. . .(
∂f2
∂xn
)x=x(i)
. . . . . . . . . . . .(∂fn
∂x1
)x=x(i)
(∂fn
∂x2
)x=x(i)
. . .(
∂fn
∂xn
)x=x(i)
e lo Jacobiano del sistema.
Il processo iterativo della formula 3.1.2 definisce il metodo di Newton in
n variabili. Nota un’approssimazione iniziale x(0) sufficientemente buona, il
processo iterativo sopra definito determina una successione di approssimazioni
{x(i)} convergente alla radice incognita ξ. Come nel caso monodimensionale
3 RISOLUZIONE DI EQUAZIONI NON LINEARI 18
l’ordine di convergenza e ancora p = 2, dove per ordine di convergenza si
definisce il seguente:
limn→+∞
‖ξ − x(i+1)‖‖ξ − x(i)‖p
= c
Tuttavia, il problema della convergenza (connesso con la possibilita di avere o
determinare un’approssimazione iniziale x(0) sufficientemente buona) nel caso
di un sistema e molto piu delicato. Si osserva inoltre che quando lo Jacobiano
pur non essendo singolare, risulta quasi singolare, il sistema di iterazioni si
rivela mal condizionato. Riassumendo, col metodo di Newton ad ogni itera-
zione si deve:
1. valutare J (i) e f(x(i));
2. risolvere il sistema J (i)h(i) = −f(x(i));
3. porre x(i+1) = x(i) + h(i).
Il processo iterativo diviene pertanto, nel caso di n variabili:
x(i+1) = x(i) − f(x(i))
J (i)(3.1.3)
molto simile al caso unidimensionale, dove al posto dello Jacobiano compare
la derivata.
I punti 1 e 2 risultano pero estremamente dispendiosi, tranne in quei casi
in cui lo Jacobiano e sparso (cioe quando ogni funzione fij dipende da poche
variabili). Un altro inconveniente di questo metodo e la necessita di conoscere
o poter valutare le n2 derivate parziali presenti in J (i). Al fine di ridurre il
“costo” di ogni iterazione del metodo di Newton, sono state proposte diverse
alternative, tutte volte alla ricerca di approssimazioni “efficienti” B(i) dello
Jacobiano J (i).
Si e notato che la matrice risolvente del problema della taratura dei colori in
immagini fotografiche presenta una forma fortemente diagonale; si e pertanto
3 RISOLUZIONE DI EQUAZIONI NON LINEARI 19
pensato che fosse molto conveniente (sia in termini di costi che di risultati
ottenuti) procedere con la generalizzazione a n dimensioni del metodo iterativo
ad una dimensione conosciuto come metodo “a farfalla”.
3.2 Il metodo iterativo “a farfalla”
Si supponga di riscrivere l’equazione in esame f(x) = 0 nella forma
x = g(x)
con g(x) derivabile in un intorno I della radice incognita ξ, e tale che ξ = g(ξ)
se e solo se f(ξ) = 0. Nota un’approssimazione iniziale x0 della radice ξ si
utilizza il procedimento iterativo
xn+1 = g(xn), n = 0, 1, 2, . . . (3.2.1)
per costruire la successione {xn}. Se questa converge ad un punto α, allora
ξ ≡ α, cioe f(α) = 0.
Si esamini in Figura 3.2.1 il significato geometrico della precedente formula
iterativa:
y=g(x)
Figura 3.2.1: metodo a farfalla
3 RISOLUZIONE DI EQUAZIONI NON LINEARI 20
L’equazione f(x) = 0 puo sempre essere riscritta nella forma x = g(x); anzi,
cio puo essere fatto in un numero infinito di modi. Come si puo osservare nella
Figura 3.2.1 la funzione g(x), e in particolare il valore di g′(x), svolge un ruolo
fondamentale; quest’ultimo e infatti il diretto responsabile della convergenza
o meno della successione {xn}. Infatti la successione {xn} risulta certamente
convergente quando, detto m il valore che soddisfa la seguente disuguaglianza:
|g′(ξ)| ≤ m, i = 0, 1, 2, . . .
dove ξ e un punto (non noto) dell’intervallo con estremi ξ e xi, si viene a
verificare che m < 1, cioe quando la funzione g(x) scelta ha |g′(ξ)| ≤ m < 1
in tutto un intervallo I contenente l’approssimazione iniziale x0 e tale che
g(x) ∈ I per ogni x ∈ I. In tale sistuazione ξ e l’unica radice dell’equazione
f(x) = 0 presente nel suddetto intervallo. Quando invece in tutto un intorno
di ξ risulta |g′(x)| > 1 la successione non puo convergere.
Il metodo descritto viene denominato “a farfalla” in quanto la convergenza
e assicurata se e solo se la funzione g(x) e compresa nella porzione di spazio
per cui vale |g′(x)| < 1, che ha la forma che ricorda le ali di una farfalla (Figura
3.2.2):
3 RISOLUZIONE DI EQUAZIONI NON LINEARI 21
y=g(x)
g� (x)=1
g� (x)=-1
Figura 3.2.2: zona di convergenza del metodo a farfalla per la funzione g(x)
L’espressione piu generale per il metodo iterativo a farfalla e la seguente,
facilmente riutilizzabile anche nel caso n-dimensionale:
xi+1 = xi + f(xi)− yi . (3.2.2)
E pero da sottolineare il fatto che nella correzione dei colori nelle immagini
fotografiche avvengono degli errori, la maggior parte dei quali causati dalla
non convergenza del metodo iterativo appena esposto.
Si esaminera piu in dettaglio la situazione nel momento in cui si vedranno
i risultati ottenuti con il programma implementato.