Sei sulla pagina 1di 35

UN METODO POLINOMIALE PER IL CALCOLO DI

FUNZIONI DI MATRICI NON SIMMETRICHE BASATO


SUI PUNTI DI LEJA
Jacopo Cacco

Indice
1 Introduzione

2 Funzioni di matrici
2.1 Tecniche per il calcolo approssimato di
2.1.1 Serie di Taylor . . . . . . . . .
2.1.2 Diagonalizzazione di matrici . .
2.1.3 Decomposizione di Schur . . .
2.2 Alcuni esempi di funzioni di matrice .
2.2.1 Radice quadrata . . . . . . . .
2.2.2 Esponenziale di matrice . . . .
2.2.3 Logaritmo di matrice . . . . . .

.
.
.
.
.
.
.
.

7
8
8
9
9
10
10
11
12

3 Approssimazione con i punti di Leja


3.1 Weakly Admissible Meshes . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Algoritmo DLP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13
14
17

4 Descrizione del metodo e risultati


4.1 Il metodo . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1 Costruzione dellellisse . . . . . . . . . . . . . . . . .
4.1.2 Costruzione della mesh . . . . . . . . . . . . . . . .
4.1.3 Algoritmo DLP: estrazione dei punti di Leja . . . . .
4.1.4 Interpolazione delle funzioni di matrici con il metodo
4.2 Risultati: un problema di convezione-diffusione . . . . . . .

. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
di Newton
. . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

21
21
21
22
23
25
26

A Codici MATLAB
A.1 Codice 1: Costruzione dellellisse . . .
A.2 Codice 2: Costruzione della mesh . . .
A.3 Codice 3: Estrazione dei Punti di Leja
A.4 Codice 4: Interpolazione con il metodo

.
.
.
.

.
.
.
.

.
.
.
.

29
29
30
31
33

funzioni di matrici
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .

. . . . . . .
. . . . . . .
. . . . . . .
di Newton

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.

INDICE

Capitolo 1

Introduzione
Data una matrice A Rnn , e una funzione di matrice f analitica in una certa regione
del piano complesso, ci poniamo il problema di calcolare f (A) ottenendo linterpolazione
polinomiale di f con il metodo di Newton. I nodi di interpolazione saranno i cosiddetti
punti di Leja, ottenuti tramite lalgoritmo DLP (Discrete Leja Points). Tali punti vengono
definiti asintoticamente ottimi in quanto asintoticamente garantiscono che la convergenza
uniforme sia la stessa dei polinomi di miglior approssimazione. Inoltre hanno una costante
di Lebesgue che cresce al pi`
u linearmente con il grado di interpolazione. Utilizzeremo i
punti estratti dallalgoritmo DLP come nodi per il polinomio interpolante, e ricaveremo
una ricorrenza a tre termini che permetter`a di calcolare in maniera semplice il valore del
polinomio interpolante calcolato in A. Produrremo infine alcuni risultati numerici con delle
matrici e delle funzioni test. Le funzioni sui quali effettueremo i test saranno note funzioni
analitiche (esponenziale, radice quadrata, logaritmo), sulle quali esistono gi`a degli altri
metodi per il loro calcolo numerico, e sulle quali sar`a quindi possibile confrontare i nostri
risultati.
Questo metodo, che ovviamente produce un calcolo approssimato di f (A), ha il vantaggio
che, dal punto di vista computazionale, ha un costo in operazioni pari a quello di un prodotto di matrici ad ogni passo delliterazione (mn3 , dove n `e la dimensione della matrice e
m `e il numero delle iterazioni del metodo).
Nel Capitolo 2 introduciamo la teoria necessaria sulle funzioni di matrici, ricordando il
loro legame con lIntegrale di Cauchy per funzioni di una variabile complessa, e successivamente descrivendo le principali tecniche gi`a esistenti per il calcolo approssimato di radice
quadrata, esponenziale e logaritmo.
Nel Capitolo 3 vediamo in dettaglio lapprossimazione tramite i punti di Leja discreti. In
particolare mostriamo come sono ottenuti numericamente a partire da una discretizzazione di un insieme compatto, detto Mesh debolmente ammissibile, e perche sono importanti
5

CAPITOLO 1. INTRODUZIONE

nellambito della teoria dellapprossimazione.


Nel Capitolo 4 mostriamo come si possono valutare funzioni di matrici con interpolanti
nei punti di Leja, evidenziando la formula ricorsiva ottenuta dal metodo di Newton per
lapprossimazione polinomiale.
Successivamente esibiremo i risultati dei test numerici, sulla base di un problema fisico di
convezione-diffusione.
Osservermo che la convergenza del metodo `e garantita per le funzioni che utilizzeremo come
test, e che dal punto di vista computazionale il metodo `e indubbiamente efficiente (sia per
la costruzione della mesh, sia per la formula ricorsiva); noteremo tuttavia che a gradi di
interpolazione alti, e con una scelta della base polinomiale poco accurata, si possono verificare problemi di malcondizionamento che possono rallentare notevolmente la convergenza.

Capitolo 2

Funzioni di matrici
Data una matrice A Rnn e una funzione scalare f , definiamo limmagine di f tramite A
in modo tale da generalizzare la definizione di funzione in una variabile complessa, f (z), z
C. Ci`o ci fornisce numerosi vantaggi, come la possibilit`a di sostituire loperazione di divisione in ambito scalare con la moltiplicazione per la matrice inversa in ambito matriciale.
Si consideri ad esempio la funzione scalare
f (z) =

1 + z2
, t #= 1
1 z2

(2.1)

Risulta naturale definire la corrispondente funzione di matrice


f (A) = (I A)1 (I + A2 ), 1
/ (A)

(2.2)

dove (A) corrisponde allo spettro di A, ossia allinsieme degli autovalori di A.


Diamo quindi la definizione di una funzione di matrice come la generalizzazione del Teorema
dellintergrale di Cauchy:
Definizione 1. Data una matrice A Cnn di spettro (A) e una funzione f che sia
analitica in un insieme compatto K, e tale che K (A) , definiamo
!
1
f (A) :=
f (z)(zI A)1 dz
(2.3)
2i K
Ci poniamo quindi il problema di calcolare numericamente limmagine tramite f di una
generica matrice A. Dal punto di vista computazionale `e un problema molto complesso,
sia per la dimensione di A, che pu`o essere molto grande, sia perche non sempre `e possibile
calcolare esplicitamente lintergrale di Cauchy.
E bene ricordare che esistono altri modi per definire la funzione di matrice. I pi`
u noti,
oltre a quello appena descritto, sono quelli che sfruttano la forma canonica di Jordan e
linterpolazione di Hermite (cf. [1]). Queste ulteriori definizioni sfruttano delle propriet`a
7

CAPITOLO 2. FUNZIONI DI MATRICI

algebriche delle matrici che permettono di ricondurre il calcolo di f (A) al calcolo di f (z),
cio`e al calcolo di una funzione scalare. Tali definizioni sono comunque equivalenti alla (2.3),
pertanto i risultati che otterremo in questo lavoro sono indipendenti dalla definizione di
f (A).
Dal punto di vista applicativo, il calcolo di f (A) trova applicazione in numerosi campi, non
solo prettamente matematici.
Si pensi ad esempio alla funzione esponenziale, e al ruolo fondamentale che essa gioca
nellambito della risoluzione delle equazioni differenziali lineari. Oppure, nel campo della
probabilit`a e statistica, di notevole interesse `e il calcolo di esponenziale e logaritmo delle
matrici stocastiche (particolari matrici con somma di righe e colonne pari a 1). O ancora, in algebra lineare, capita spesso il problema di dover calcolare la radice quadrata di
una matrice Hermitiana definita positiva (decomposizione di Cholewsky), o di trovare la
soluzione di equazioni non lineari del tipo XAX = B.

2.1

Tecniche per il calcolo approssimato di funzioni di matrici

Vediamo brevemente alcune delle tecniche pi`


u comunemente utilizzate per approssimare le
funzioni di matrici.

2.1.1

Serie di Taylor

Quando la funzione f `e analitica, ossia derivabile un numero infinito di volte nel campo
complesso, essa `e sempre sviluppabile come serie di potenze:
f (z) =

"
k=0

ak (z )k ,

ak =

f (k) ()
k!

(2.4)

Vale inoltre il seguente teorema di convergenza, che riportiamo per il caso matriciale:
Teorema 1. [6, p. 76] Sia f una funzione analitica con espansione in serie di potenze (o
di Taylor) come in (2.1) e con raggio di convergenza r. Data allora una matrice A Cnn ,
`e definita la f (A) come serie di potenze, cio`e da
f (A) =

"
k=0

ak (A I)k ,

(2.5)

se e solo se ognuno degli autovalori i di A soddisfa una delle seguenti condizioni:


|i | < r
|i | = r e la serie f ni 1 () (dove ni `e lindice di i ) `e convergente nel punto
= i

2.1. TECNICHE PER IL CALCOLO APPROSSIMATO DI FUNZIONI DI MATRICI 9


Il problema dellapprossimazione tramite la serie di Taylor `e dovuta al fatto che si
ha a che fare con delle somme infinite che sono, ovviamente, incalcolabili. Pertanto si
utilizzano le somme parziali, utilizzando un numero finito ma sufficientemente grande di
termini. A tal proposito, il seguente teorema fornisce un limite superiore allerrore dovuto
al troncamento della serie di Taylor:
Teorema 2. [6, p. 77] Sia f sviluppabile in serie di potenze come in (2.1), con raggio di
convergenza r. Se A Cnn , con (A (I)) < r, allora definita una qualunque norma
matriciale vale la seguente disuguaglianza:
%f (A)

2.1.2

s1
"
k=0

ak (A I)k %

1
ds f
max %(A I)s s (I + t(A I))%.
s! 0t1
dt

(2.6)

Diagonalizzazione di matrici

Se la matrice A `e diagonalizzabile, cio`e se esiste una matrice diagonale D = diag(i ),


tale che A = ZDZ 1 , dove i i sono gli autovalori di A e la matrice Z ha per colonne
gli autovettori di A, allora il calcolo di f (A) si riduce al calcolo di f (i ), poiche vale
f (A) = Z diag(f (i ))Z 1 . Tuttavia questo metodo funziona molto bene solo con una certa
classe di matrici, ossia le matrici normali (matrici che commutano con la propria trasposta
coniugata, tra cui le matrici simmetriche) altrimenti ci possono essere dei problemi di
condizionamento.

2.1.3

Decomposizione di Schur

Data una matrice A, la sua decomposizione di Schur `e definita come QT AQ = T , con Q


unitaria e T triangolare superiore, con in diagonale gli autovalori di A. Tale decomposizione
pu`o essere prodotta con lalgoritmo QR. In questo modo, si ha che f (A) = Qf (T )QT , e
quindi il problema del calcolo di f(A) si riduce a quello di calcolare f (T ). Ci viene allora
in aiuto il seguente risultato:
Teorema 3. [6, p. 84] Sia T Cnn una matrice triangolare superiore, e sia la funzione
f definita sullo spettro di T. Allora f (T ) = F `e triangolare superiore con fii = f (tii ) e
"
fij =
ts0 ,s1 ts1 ,s2 . . . tsk1 sk f [s0 , . . . , sk ],
(2.7)
so,...,sk Sij

dove i = tii , Sij `e linsieme di tutte le successioni crescenti di interi che iniziano in i e
finiscono in j, e f [s0 , . . . , sk ] `e la differenza divisa di ordine k di f in s0 , . . . , sk .
Il teorema appena enunciato produce, tra laltro, delle formule esplicite per il calcolo
delle fij nelle forme canoniche di Jordan e dei blocchi triangolari 2x2 (Teorema di KennyLaub, [6, p. 76]).

10

CAPITOLO 2. FUNZIONI DI MATRICI

Il problema di questo metodo consiste nel fatto che ha un costo computazione elevatissimo
(addirittura O(sn )); questo problema `e stato parzialmente risolto dallalgoritmo di Parlett
(cf. [6, p. 86], che riduce il numero di operazioni a O(2n3 /3). Tuttavia, per come `e costruito
lalgoritmo, esso non funziona nel caso in cui la matrice T abbia autovalori ripetuti. Per
ovviare questo problema si usa utilizzare lalgoritmo suddividendo T in blocchi diagonali
2x2.

2.2

Alcuni esempi di funzioni di matrice

In questa sezione vedremo brevemente come vengono utilizzati alcuni di questi metodi per
le funzioni di matrice quadrata, esponenziale e logaritmo.

2.2.1

Radice quadrata

La radice quadrata di una matrice non `e, in genere, unica. Generalmente tuttavia, data
una matrice A si `e interessati a calcolare lunica radice quadrata X definita positiva. Una
tale matrice non `e sempre definita, infatti notiamo che dalla definizione di funzione di
matrice si ha
!

2
A= A
(t2 I + A)1 dt.
(2.8)

Vediamo subito quindi che una delle condizioni per poter calcolare questa funzione di
matrice `e che lo spettro di A non contenga autovalori con parte reale negativa.
Vale inoltre il seguente Teorema riguardante lesistenza di radici quadarate reali:

Teorema 4. [6, p. 138] Sia A Rnn non singolare. Se A possiede autovalori negativi,
allora non possiede radici quadrate reali definite positive. Se A non ha autovalori reali
negativi, allora esistono esattamente 2r+c radici quadrate di A, dove r `e il numero di
autovalori reali distinti di A, mentre c `e il numero di coppie distinte di autovalori complessi
coniugati.
I principali metodi utilizzati per calcolare la radice quadrata di A sono basati sulla
decomposizione di Schur, gi`a vista nel precedente paragrafo, e il metodo di Newton.
Il metodo di Schur, in particolare, prevede la suddivisione della matrice in blocchi 2x2.
Nel metodo di Newton, invece, si suppone che Y sia una soluzione approssimata dellequazione X 2 = A, e che esista una qualche matrice E tale per cui Y + E = X. Allora
A = (Y + E)2 = Y 2 + Y E + EY + E 2 . Trascurando il termine di secondo ordine E 2
abbiamo la seguente ricorrenza:
X0 , Xk Ek + Ek Yk = A Xk2 , Xk + 1 = Xk + Ek , k = 0, 1, 2, . . .

(2.9)

2.2. ALCUNI ESEMPI DI FUNZIONI DI MATRICE

11

In questa forma, il metodo di Newton `e decisamente dispendioso, dovendo ad ogni iterazione


risolvere un equazione nellincognita Ek . Con il seguente lemma tuttavia siamo in grado
di ridurre notevolmente il numero di conti:
Lemma 1. [6, p. 139] Supponiamo che nelliterazione di Newton X0 commuti con la matrice A, e che le iterate Xk siano tutte ben definite. Allora, per ogni k, Xk commuta con
A e Xk+1 = 12 (Xk + Xk1 A).
Questo ci permette di riscrivere in maniera pi`
u semplice il metodo sopra descritto,
ponendo X0 = A, che commuta ovviamente con se stessa.
Osservazione 1. Per poter usare questo metodo, che sfrutta linversa della matrice A
dobbiamo richiedere che lo spettro non contenga lautovalore 0; questa sar`
a lipotesi che
richiederemo anche nel metodo polinomiale che spiegheremo nei capitoli successivi. Esistono comunque degli altri metodi iterativi che garantiscono la convergenza anche per matrici
singolari.

2.2.2

Esponenziale di matrice

Ricordiamo che la matrice esponenziale `e definita nella seguente maniera:


A

e =

"
Ak
k=0

k!

(2.10)

e che la serie di potenze relativa a tale funzione ha raggio di convergenza infinito. Quello dello sviluppo di Taylor `e il metodo usato dallo stesso MATLAB per il calcolo (approssimato)
della matrice esponenziale tramite il comando expm, che utilizzeremo successivamente per
la verifica dei nostri risultati numerici. Un altra possibilit`a `e la rappresentazione tramite
il limite
A
eA = lim (I + )s .
(2.11)
s
s
Anche per questa funzione, inoltre, esistono degli algoritmi basati sulla decomposizione di
Schur. Uno di questi in particolare utilizza le differenze divise di Newton per il calcolo di
f (T ) (si veda il paragrafo 2.1.3). Il problema che si presenta nel calcolo delle differenze
divise si ha quando, ad esempio, i nodi di interpolazione i e i+1 sono molto vicini tra di
loro. Dato quindi che la differenza divisa f [i , i+1 ] si calcola come f [i , i+1 ] = (f (i+1 )
f (i ))/(i+1 i ), possono verificarsi problemi di accuratezza nel calcolo del denominatore,
che quindi si amplificano nel valore finale della frazione. Tuttavia, per ottenere un calcolo
pi`
u accurato delle differenze divise, si pu`o utilizzare un risultato dovuto a Opitz [1,pag.
250].

12

2.2.3

CAPITOLO 2. FUNZIONI DI MATRICI

Logaritmo di matrice

Il logaritmo di A Rnn `e qualunque matrice X tale che eX = A. Se A `e non singolare, essa


possiede infiniti logaritmi, questo perche nel campo complesso il logaritmo `e una funzione
periodica di periodo 2i. Quello che calcoleremo sar`a quindi il logaritmo principale di A,
ossia la matrice X il cui spettro `e contenuto nella striscia {z : < ((z) < }. Per
poter definire il logaritmo di A, inoltre, `e necessario che i suoi autovalori abbiano parte
reale non negativa. Un primo metodo per il calcolo del logaritmo sfrutta le serie di Taylor.
Ricordiamo che valgono le seguenti relazioni:
log(I + A) = A

A2 A3
+
...,
2
3

(A) < 1

(2.12)

e la cosiddetta Serie di Gregory (1668), che si costruisce a partire dal caso scalare sottraendo
gli sviluppi di Taylor di log(1 + x) e di log(1 x):
log(A) = 2

"
k=0

1
((I A)(I + A)1 )2k+1 , min )(i (A)) > 0
i
2k + 1

(2.13)

Notiamo subito che la Serie di Gregory ha un raggio di convergenza molto pi`


u grande
rispetto alla serie di Taylor, e in particolare essa converge per qualunque matrice hermitiana
definita positiva. Tuttavia la convergenza pu`o essere molto lenta se A non `e abbastanza
vicina allidentit`a.
Altri metodi per il calcolo del logaritmo sfruttano la decomposizione di Schur. Come nel
caso dellesponenziale, anche qui si ripresenta il problema del calcolo della differenza divisa
f [1 , 2 ], quando 1 e 2 sono vicini tra loro. Per evitare questo problema si opera una
sostituzione di questo tipo:
log 2 log 1 = log

2
+ 2i Avv(log 2 log 1 )
1

(2.14)

dove Avv `e lindice di avvolgimento. Poniamo Avv(log 2 log 1 ) = U e z = (2


1 )/(2 + 1 ) e otteniamo che la (2.11) equivale a
#
$
1+z
log
+ 2U
(2.15)
1z
Infine, ricordando che arctan h(z) =

1
2

log( 1+z
1z ), concludiamo che

f [1 , 2 ] = t12

2 arctan h(z) + 2U
2 1

(2.16)

Capitolo 3

Approssimazione con i punti di


Leja
In questo capitolo descriveremo un algoritmo efficiente per linterpolazione polinomiale, da
applicare poi alle funzioni di matrici. Come visto nel Capitolo 2, possiamo ricondurci al
caso delle funzioni scalari complesse in una variabile.
Lalgoritmo che utilizzeremo ci fornir`a i Discrete Leja Points (di seguito abbreviato con
DLP), i cui vantaggi sono i seguenti:
la costante di Lebesgue n cresce moderatamente con n (vedi paragrafo successivo);
se {zj }j=1,...,n `e un set di punti di Leja di grado n1 per il dominio C, allora le costanti di Lebesgue del sottoinsieme {zj }j=1,...,m crescono anchesse moderatamente
per m n.

Vediamo subito come la crescita moderata di n renda i DLP dei buoni punti di approssimazione. Ricordiamo che definito pn il polinomio di miglior approssimazione per la
funzione f , per un noto teorema (cf. [9]) vale la relazione:
%f pn % (1 + n )%f pn %

(3.1)

lim %f pn %1/n lim (1 + n )1/n %f pn %1/n

(3.2)

per ogni polinomio pn Pn (K). Sia quindi pn il polinomio interpolante nei punti di Leja;
estraendo la radice n-esima e passando ai limiti otteniamo
n

che, vista la crescita moderata della costante di Lebesgue con n, equivale a


lim %f pn %1/n lim (1 + n)1/n %f pn %1/n = lim %f pn %1/n

(3.3)

Dato che pn `e il polinomio di miglior approssimazione, non pu`o verificarsi la disuguaglianza


stretta, quindi il polinomio pn , che interpola sui DLP, `e asintotico al polinomio di miglior
approssimazione.
13

14

3.1

CAPITOLO 3. APPROSSIMAZIONE CON I PUNTI DI LEJA

Weakly Admissible Meshes

Dato un insieme compatto K C, i polinomi di grado massimo n ristretti a K formano


uno spazio vettoriale Pn (K) di dimensione n + 1. Preso quindi un sottoinsieme di punti
distinti di K, A= {a1 , . . . , an+1 }, e una funzione f : K C, vogliamo trovare un polinomio
pn Pn (K) tale che
pn (ai ) = f (ai ), i = 1, . . . , n + 1
(3.4)
Ci`o equivale a risolvere il seguente sistema di n + 1 equazioni lineari:
pn (ai ) =

n+1
"

cj Pj (ai ) = f (ai ),

i = 1, . . . , n + 1

(3.5)

j=1

dove le costanti cj C sono le incognite del sistema, e i Pj sono i polinomi che costituiscono
una base di Pn (K). In forma matriciale questo sistema si scrive nella forma
V (a; P )c = F,

(3.6)

dove V (a; P ) = [Pj (ai )]1i,jn+1 `e una matrice di Vandermonde, c `e il vettore dei coefficienti e F `e il vettore dei valori f (ai ). Se i punti di A sono a due a due distinti, la matrice
di Vandermonde `e non singolare, e quindi possiamo definire il polinomio interpolatore di
Lagrange come
li (z) =

det V (a1 , . . . , aj1 , z, aj+1 , . . . , an+1 ; P )


,
det V (a; P )

i = 1, . . . , n + 1,

(3.7)

con li (aj ) = ij , e da cui otteniamo il polinomio interpolante i punti dellinsieme A


pn (z) =

n+1
"

f (ai )li (z).

(3.8)

i=1

Ora, se linsieme dei punti A K, di cardinalit`a n + 1, `e tale da massimizzare il valore


assoluto del determinante della matrice V (a; P ) tali punti sono detti punti di Fekete, (cf
[2]) dato che |li (z)| 1 e li (ai ) = 1, la costante di Lebesgue (cf. [11]), per definizione
sar`a
n+1
n+1
"
"
A := max
|li (z)| max
1=n+1
(3.9)
zK

i=1

zK

i=1

I punti di Fekete, quindi, data la crescita moderata della costante di Lebesgue, costituiscono un buon insieme di punti di interpolazione, e si nota che gli stessi punti e la costante
di Lebesgue sono indipendenti dalla base polinomiale scelta. Il problema `e che, dal punto di vista computazionale, questi punti nel continuo sono difficili da calcolare, perche la
massimizzazione del determinante della matrice di Vandermonde `e un problema di ottimizzazione non lineare da applicare ad una matrice di dimensione arbitrariamente grande

3.1. WEAKLY ADMISSIBLE MESHES

15

e che coinvolge n + 1 variabili complesse. Tale problema `e classificato come NP-hard, e


per questo motivo si usa ricavare i punti con degli algoritmi greedy (letteralmentegolosi)
che lavorano su delle discretizzazioni del compatto K, e che ricavano, quindi, dei punti
approssimati. E chiaro che queste discretizzazioni non possono essere scelte arbitrariamente, ma dovranno essere sufficientemente grandi e dense tali da approssimare i punti
di Fekete, o quantomeno - e nello specifico sar`a questo il nostro caso - da avere la loro
stessa distribuzione asintotica al crescere del grado di interpolazione (si veda [1]) . Daltra
parte, per ragioni di tipo computazionale, richiederemo che questi insiemi siano di cardinalit`a minima indispensabile per raggiungere un buon livello di approssimazione. Un tipo
di discretizzazioni che raggiungono lo scopo sono le mesh debolmente ammissibili (Weakly
Admissibile Meshes), di cui ricordiamo la definizione di seguito:
Definizione 2. Dato un compatto K C, una mesh debolmente ammissibile (di seguito
abbreviata con WAM), `e una sequenza di sottoinsiemi discreti Mn K, tale che valga la
seguente disuguaglianza polinomiale
%p%K Cn %p%Mn ,

p Pn (K)

(3.10)

dove Cn > 0 e card(Mn ) cresce al pi`


u in maniera polinomiale in n.
Una mesh si dice ammissibile (di seguito abbreviata con AM) se `e una WAM in cui la
successione Cn `e limitata, ossia Cn C, n N.
Si possono dimostrare una serie di propriet`a interessanti per le (W)AM, di cui ricordiamo le seguenti quattro:
1. per mappe affini di del dominio, limmagine di una (W)AM `e ancora una (W)AM,
con la stessa costante C;
2. ogni sequenza di insiemi contenenti Mn , con cardinalit`a a crescita polinomiale, `e una
(W)AM con la stessa costante Cn ;
3. ogni sequenza di insiemi unisolventi di interpolazione la cui costante di Lebesgue
cresce al pi`
u in modo polinomiale con il grado n `e una WAM, con Cn la costante di
Lebesgue stessa;
4. ununione finita di(W)AM `e una(W)AM per la corrispondente unione di compatti,
con costante Cn il massimo delle corrispondenti costanti.
Prima di descrivere lalgoritmo di estrazione dei punti di Leja, vediamo come costruire
delle WAM di cardinalit`a minima da utilizzare come input. Il punto di partenza, dato un
compatto K C `e la disuguaglianza di Markov, che `e soddisfatta se esistono delle costanti
e , entrambe positive, tali che
%p( %K (deg(p)) %p%K ,

p Pn (K)

Lesistenza di tali WAM `e conseguenza del seguente risultato di Pommerenke:

(3.11)

16

CAPITOLO 3. APPROSSIMAZIONE CON I PUNTI DI LEJA

Teorema 5. (Pommerenke, [8]) Ogni K C compatto connesso, che non sia un singolo
e
punto, soddisfa la disuguaglianza di Markov per = 2cap(K)
, e = 2, dove cap(K) `e la
1
capacit`
a logaritmica dellinsieme K.
Ricordando che il diametro di un insieme `e la massima distanza tra tutte le coppie di
punti appartenenti a quellinsieme, e dato che per un insieme compatto K vale la relazione
cap(K) diam(K)
, (cf. [10]), `e sufficiente utilizzare un limite inferiore per il diametro di
4
K, e applicare la seguente
Proposizione 1. (Piazzon, Vianello, [7]) Sia C > 1 e sia K C compatto connesso che
soddisfa la disuguaglianza di Markov come nel Teorema 1. Sia la frontiera di K data da
una curva C 1 descritta da : [a, b] K, con la condizione che maxt[a,b] | ( (t)| .
Allora gli insiemi
% #
$
&
k(b a)

Mn = a +
: k = 0, . . . , M 1, n N ,
(3.12)
M 1
dove

'

(
C(b a)en2
M=
,
(C 1)diam(K)

(3.13)

formano una mesh ammissibile per K.

Da questo risultato discende un corollario che utilizzeremo per i nostri esperimenti


numerici. In buona sostanza non facciamo altro che applicare la Proposizione 1 al caso
dellellisse, che come noto pu`o essere scritta come curva parametrica tramite la relazione
(t) = a sin(t) + ib cos(t),

a, b R, t [0, 2]

(3.14)

dove a e b sono le lunghezze in modulo dei suoi semiassi.


Corollario 1. Data unellisse parametrizzata come in (3.11) essa soddisfa alle ipotesi della
Proposizione 1 e pertanto la successione di insiemi Mn , definita come sopra, forma una
mesh ammissibile di costante C, e con diam(K) = max{a, b}, e = 2 max{a, b}.
Dimostrazione. La curva definita in (3.11) che descrive lellisse, non solo `e di classe C 1
ma addirittura di classe C in quanto somma di funzioni di classe C . Inoltre
| ( (t)| = |a sin(t) + ib cos(t)| |a sin(t)| + |i||b cos(t)| |a| + |b| 2 max{a, b} =: (3.15)
Possiamo quindi applicare la Proposizione 1, ricordando che diam(K) altri non `e che lasse
maggiore, e quindi risulta
'
(
4Cen2
M=
(3.16)
C 1
1

Per la definizione della capacit`


a logaritmica di un insieme, si veda [5].

3.2. ALGORITMO DLP

17

Osservazione 2. Per ridurre ulteriormente la cardinalit`


a della mesh senza comprometterne la funzionalit`
a, nei codici MATLAB useremo la seguente parametrizzazione equivalente
dellellisse: (t) = a2 sin(t) + i 2b cos(t). Questo ci permetter`
a di ridurre alla quantit`
a
max{a, b} e quindi di ridurre ulteriormente la cardinalit`
a M della mesh.
Osservazione 3. Grazie alla Proposizione 1 abbiamo costruito una mesh che cresce in
maniera quadratica rispetto al grado massimo del polinomio. Sperimentalmente si verifica
che `e possibile creare delle mesh di cardinalit`
a inferiore, ma che discretizzano comunque
bene il compatto K. Nei nostri programmi faremo un confronto fra una mesh di cardinalit`
a
che cresce con n2 , e una che invece cresce con n log n. Vi `e inoltre evidenza sperimentale
del fatto che `e possibile costruire delle buone mesh di cardinalit`
a 2n e 3n.
2
Per il caso n , invece, unulteriore riduzione dei punti della mesh che utilizzeremo nei codici
sar`
a inoltre motivata dal fatto che, nel caso specifico dellellisse, vale 2cap(K) > diam(K),
e quindi si porr`
a
'
(
4Cn max{a, b}en2
M=
(3.17)
(Cn 1)(a + b)

3.2

Algoritmo DLP

Siamo finalmente pronti per definire lalgoritmo di estrazione dei punti discreti di Leja, che
di seguito chiameremo algoritmo DLP (Discrete Leja Points). Come detto in precedenza,
tale algoritmo prende in input la nostra WAM, crea la matrice rettangolare di Vandermonde
A = V (a; P ) nella base scelta P , e di seguito estrae i punti di Leja in un vettore .
Ricordiamo che il nostro scopo `e massimizzare il determinante di tale matrice; per farlo
lalgoritmo DLP effettua la decomposizione LU della matrice, ossia decompone la matrice A
nel prodotto di una matrice triangolare inferiore L con diagonale unitaria e di una matrice
triangolare superiore U . Questa decomposizione avviene tramite leliminazione di Gauss,
che determina i pivot nel seguente modo:
Il primo pivot `e quellelemento Ar1 1 tale che |Ar1 1 | sia massimo con r1 = 1, . . . , n
Ogni riga j #= r1 viene rimpiazzata da s`e stessa meno Aj1 /Ar1 1 volte la r1 -esima riga.
In questo modo otteniamo una matrice equivalente alla prima con il pivot in posizione
{r1 , 1}, e le entrate aj1 = 0 per j #= r1 . Infine con una semplice permutazione, si
scambia la prima riga con quella contenente il pivot.
Si applica quindi lo stesso procedimento alla sottomatrice A1 = A2i,2j , e alle
sottmatrici successive fino ad esaurire la dimensione di A.
Si `e dunque soliti scrivere la decomposizione tramite la formula P A = LU , dove P `e
la matrice di permutazione utilizzata per effettuare gli scambi, mentre U contiene nella
diagonale i pivot precedentemente trovati. Passando ai determinanti, e ricordando che

18

CAPITOLO 3. APPROSSIMAZIONE CON I PUNTI DI LEJA

le matrici di permutazione hanno determinante 1, mentre le matrici triangolari hanno


determinante pari al prodotto degli elementi in diagonale, otteniamo che
| det(P A)| = | det(A)| = | det(LU )| = | det(U )|,

(3.18)

cio`e il prodotto dei pivot. Cerchiamo di capire cosa abbiamo ottenuto: ad ogni passo
delleliminazione di Gauss determiniamo il pivot scegliendo lelemento di modulo massimo
nella prima colonna della (sotto)matrice considerata. Questo pivot viene inserito nella
diagonale della matrice U , ed essendo questa triangolare contribuisce a renderne massimo
il determinante. Al termine delliterazione avremo dunque massimizzato il determinante
della matrice A.
Scriviamo quindi ordinatamente lalgoritmo DLP, usando uno pseudo-codice in MATLAB:
Algoritmo DLP
a = An = {a1 , . . . , aM };
A = V (a; P );
[L, U, ] = LU (A,vector);

% vettore di permutazione

ind = (1 : N ); = a(ind)

% Estrazione dei punti

Osservazione 4. Si presti attenzione alla possibilit`


a che ci siano dei problemi di malcondizionamento della matrice di Vandermonde. Ci`
o `e dovuto allutilizzo della base monomiale,
che rischia di far terminare lalgoritmo per singolarit`
a della matrice. Per risolvere il problema, normalmente, `e sufficiente eseguire un paio di fattorizzazioni QR sulla matrice A,
che sostituiscono la base monomiale con una base ortogonale. Questo sistema, tuttavia,
funziona bene solo fino a gradi di interpolazione non troppo elevati, e in ogni caso lalgoritmo perde parte della sua efficienza. Pertanto si `e soliti (lo vedremo anche nei nostri codici)
cambiare la base monomiale standard (la indichiamo ad esempio con {1, z, . . . , z n }) con una
base monomiale shiftata nel baricentro b della mesh e scalata del valore S = max |zi b|
(gli zi sono i nodi della mesh), ossia
%
#
$ &
zb
zb n
1,
,...,
S
S

(3.19)

Lo shift della base, in particolare, ha una valenza fondamentale nel calcolo dei punti e nel
garantire la loro bont`
a. Infatti, se il dominio non `e centrato nellorigine, mentre invece
parte della sua frontiera le si avvicina, si rischia di compromettere la simmetria nel risultato dellestrazione e quindi la bont`
a dei punti di interpolazione. Questo avviene perche
lalgoritmo estrae un maggior numero di punti lontano dallorigine.

3.2. ALGORITMO DLP

19

Osservazione 5. Unaltra importante osservazione da fare riguarda la stretta dipendenza


dei punti di Leja estratti dallalgoritmo con la base P da noi scelta. Questo offre il vantaggio
che, se alla base P aggiungiamo un ulteriore elemento, i punti gi`
a ottenuti con la base di
partenza rimangono comunque validi.

20

CAPITOLO 3. APPROSSIMAZIONE CON I PUNTI DI LEJA

Capitolo 4

Descrizione del metodo e risultati


4.1

Il metodo

Nei capitolo precedente abbiamo visto come si calcolano i DLP. Vediamo ora in che modo
possono essere utilizzati nellambito dellapprossimazione delle funzioni di matrici. Data
una funzione di matrice f e una matrice A di spettro (A), tale per cui la definizione di
f (A) abbia senso, il nostro metodo di approssimazione polinomiale si articola nel modo
seguente:
1. Determinazione del compatto K contenente lo spettro di A. Tale passaggio `e necessario dalla definizione di funzione di matrice. Quello che faremo, quindi, data
una generica matrice quadrata A, sar`a approssimare gli autovalori e costruire la pi`
u
piccola ellisse che li contiene.
2. A partire dal bordo di questa ellisse costruiremo una WAM da utilizzare per ricavarci
i nodi di interpolazione.
3. Estraiamo dalla WAM i punti di Leja con lalgoritmo DLP.
4. Con il metodo di Newton determiniamo il polinomio interpolante, e il valore della
funzione con una ricorrenza a tre termini.
Per ognuno dei passi del metodo abbiamo prodotto delle routine in MATLAB, il cui
codice `e riportato in appendice, con le quali abbiamo effettuato i test e ricavato i risultati
numerici, che descriveremo di seguito.

4.1.1

Costruzione dellellisse

In questo passo, lunica cosa cui bisogna stare attenti `e la scelta della matrice A, dato
che le funzioni radice quadrata, esponenziale e logaritmo richiedono delle caratteristiche
particolari sullo spettro. In particolare:
21

22

CAPITOLO 4. DESCRIZIONE DEL METODO E RISULTATI


per la radice quadrata e il logaritmo di matrice sceglieremo la matrice A con lo
spettro (A) contenuto tutto nel semipiano complesso destro, ossia tutti con tutti gli
autovalori con parte reale positiva.
per lesponenziale di matrice sceglieremo la matrice A con (A) < 1. Se fosse infatti
(A) 1 lesponenziale tenderebbe, in modulo, ad esplodere, e quindi con il metodo
polinomiale non otterremmo una buona approssimazione.

Una volta ricavato lo spettro, si considerano gli autovalori con massima e minima
parte reale, e quello con massima parte immaginaria, e si determinano cos` assi e centro
dellellisse.
Costruiamo poi lellisse con una semplice function (vedi Codice 1) che prende in input i
semiassi e le coordinate del centro, e utilizza la parametrizzazione definita in (3.11).

4.1.2

Costruzione della mesh

Il programma afek_ellipse.m (vedi Codice 2) richiede quali input i parametri dellellisse


(semiassi, centro) e il grado di interpolazione e costruisce la mesh da cui poi verranno
estratti i punti di Leja. Come anticipato nel precedente capitolo, sono presenti due metodi
per il calcolo delle mesh: il primo (selezionabile ponendo la variabile extraction_type=1),
utilizza la formula ottenuta nel Corollario 1, e quindi genera una mesh che ha crescita
quadratica con n; il secondo invece crea una mesh di cardinali`a che cresce con n log n. Le
costanti C sono state ricavate sperimentalmente.
Il seguente grafico mostra come cresce la costante di Lebesgue in funzione del grado di
interpolazione rispetto alla crescita di tipo lineare, sia nel caso del metodo n2 , sia nel caso
del metodo n log n.

(a) Metodo n2

(b) Metodo n log n

4.1. IL METODO

23

Notiamo che nel caso (a) la precisione `e sicuramente maggiore, ma nei nostri test ci
siamo dovuti arrestare al grado di interpolazione 10, perche i tempi di esecuzione erano
troppo elevati. Nel caso (b) invece landamento della costante di Lebesgue `e oscillante,
ma comunque in media `e sub-lineare. Inoltre i tempi di esecuzione sono notevolmente pi`
u
lenti. Quindi il metodo n log n assicura non solo una crescita moderata della costante di
Lebesgue, ma anche un notevole risparmio in termini di operazioni macchina.

4.1.3

Algoritmo DLP: estrazione dei punti di Leja

Lestrazione dei punti viene eseguita tramite la routine approx_fekete.m. (vedi Codice 3)
Si noti che con tale programma `e possibile estrarre anche i punti approssimati di Fekete,
che non sono oggetto di questo lavoro, ma che ci tornano utili per confrontare i risultati
numerici. I punti approssimati di Fekete sono dei punti che approssimano i punti di Fekete
nel continuno, e, come i punti di Leja, sono considerati dei buoni punti di interpolazione.
Come si pu`o vedere, il programma prende la mesh dellellisse che abbiamo creato con la
routine precedente, costruisce la matrice di Vandermonde gi`a nella base riscalata e shiftata (si veda il Capitolo 3, Oss. 4), effettua due di fattorizzazioni QR, e poi in base alla
extraction_type scelta applica lalgoritmo DLP (oppure lalgoritmo AFP per gli Approximate Fekete Points) e ci restituisce i punti che utilizzeremo per linterpolazione.
Vediamo ora i risultati. Abbiamo effettuato il test su una mesh di grado 30 per unellisse di assi a = 0.1 e b = 1, centrata nellorigine. Una volta ottenuti i punti sia con
lalgoritmo AFP sia con lalgoritmo DLP, testiamo i nodi di interpolazione su una funzione. Ci limiteremo per ora al caso scalare; per i risultati nel caso matriciale rimandiamo la
trattazione alla sezione successiva. La funzione da interpolare che utilizzeremo come test
`e una funzione esponenziale definita da y(z) = e5z .

(a) Costanti di Lebesgue, rispetto alla crescita lineare:


gli asterischi rappresentano gli AFP, i triangoli i DLP

(b) Errore di interpolazione in scala logaritmica: gli


asterischi rappresentano gli AFP, i triangoli i DLP

24

CAPITOLO 4. DESCRIZIONE DEL METODO E RISULTATI

Di nuovo, notiamo come la crescita della costante di Lebesgue sia molto pi`
u lenta negli
AFP che non nei DLP, pur mantenendosi questa, in media, al di sotto della crescita di
tipo lineare (si confronti con la linea rossa). Osserviamo per`o che, in ogni caso, lerrore di
interpolazione dei DLP a gradi alti `e per la nostra funzione test quasi indentico.
Facendo riferimento a quanto visto nel paragrafo 3.2, in cui spiegavamo il funzionamento
dellalgoritmo di estrazione, mostriamo anche che se fissiamo un grado (sia questo m) per
linterpolazione, i punti DLP estratti per il grado m sono tali che un suo sottoinsieme dei
primi k elementi `e buono per linterpolazione. Vediamo di seguito un esempio con m = 30,
in cui calcoliamo le costanti di Lebesgue dei set di punti {x1 , . . . , xk } per k = 1, . . . m. (Si
veda a tal proposito il Codice 4).
N log ( N ) METHOD .
>> DLP .
DEG :
0
DEG :
1
DEG :
2
DEG :
3
DEG :
4
DEG :
5
DEG :
6
DEG :
7
DEG :
8
DEG :
9
DEG : 10
DEG : 11
DEG : 12
DEG : 13
DEG : 14
DEG : 15
DEG : 16
DEG : 17
DEG : 18
DEG : 19
DEG : 20
DEG : 21
DEG : 22
DEG : 23
DEG : 24
DEG : 25
DEG : 26
DEG : 27
DEG : 28
DEG : 29
DEG : 30

PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :
PTS :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :
LEB :

5.00000 e +04
2.99765 e +00
1.28561 e +00
2.98982 e +00
2.35168 e +00
3.96907 e +00
2.75498 e +00
4.82396 e +00
4.81389 e +00
4.66208 e +00
4.71705 e +00
9.52893 e +00
7.10738 e +00
6.81177 e +00
6.79881 e +00
6.01624 e +00
9.85031 e +00
8.10743 e +00
7.69111 e +00
1.29537 e +01
5.84122 e +00
1.03854 e +01
9.12034 e +00
1.06420 e +01
9.07345 e +00
1.20676 e +01
1.01271 e +01
7.88695 e +00
3.20247 e +01
1.62282 e +01
1.81662 e +01

WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM
WAM

CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:
CARD .:

511
511
511
511
511
511
511
511
511
511
511
511
511
511
511
511
511
511
511
511
511
511
511
511
511
511
511
511
511
511
511

4.1. IL METODO

25

Landamento delle costanti ci dice che, anche in questo caso, i punti di interpolazione
sono buoni.
Osservazione 6. Si presti attenzione a non confondere lesito di questo test con quello
mostrato nel Paragrafo 4.1.2, in cui per m = 1, . . . , 30 viene calcolata la costante di Lebesgue dei DLP di grado m. In questultimo test, invece, la cardinali`
a della WAM `e fissata,
mentre varia il grado della costante di Lebesgue.

4.1.4

Interpolazione delle funzioni di matrici con il metodo di Newton

Ricordiamo che il nostro scopo `e l approssimazione delle funzioni test con dei polinomi.
Calcoleremo cio`e
Ym = pm1 (A)
(4.1)
= f (A)
dove pm1 Pm1 (K). Linterpolazione avverr`a tramite il metodo di Newton, che ricordiamo essere definito nella seguente maniera:
pm1 (z) = f0 + f1 (z 1 ) + + fm1 (z 1 ) . . . (z m1 )

(4.2)

dove gli {i }i=1,...,m sono punti distinti del piano complesso (ossia i nostri nodi di interpolazione: i punti di Leja), e dove le fk sono le note differenze divise del metodo di
Newton:
f0 = f [1 ], fk = f [1 , . . . , k+1 ], k = 1, . . . , m 1
(4.3)
Con queste notazioni, si mostra che la (4.2) soddisfa la seguente ricorrenza a tre termini:

Y0 = O(m+1)(m+1)

Y1 = f 0 I
(4.4)

fm1

Ym = Ym1 +
(A m1 I)(Ym1 Ym2 ), m 2
fm2

26

CAPITOLO 4. DESCRIZIONE DEL METODO E RISULTATI

che sar`a quella che useremo nei nostri codici. La routine che implementa la ricorrenza
`e riportata nel Codice 4. Ai risultati numerici affiancheremo una stima dellerrore, ossia confronteremo il valore di Ym con il valore ottenuto usando le funzioni gi`a presenti in
MATLAB per il calcolo di esponenziale, logaritmo e matrice quadrata di matrice, ossia le
funzioni expm, logm, sqrtm. Questi programmi sfruttano le tecniche di calcolo spiegate nel
capitolo 2.

4.2

Risultati: un problema di convezione-diffusione

Produrremo le matrici test a partire da un classico problema fisico di convezione-diffusione.


Tale matrice si ricava dalla discretizzazione delloperatore
L(U ) = U (( + c U (

(4.5)

dove U C([0, 1]), e c `e una costante. In forma matriciale otteniamo una matrice tridiagonale A definita positiva che utilizzeremo per il calcolo di radice quadrata e logaritmo di
matrice. Per lesponenziale di matrice, invece, utilizzeremo A, che avr`a tutti gli autovalori negativi (questo per evitare che la matrice diventi troppo grande e dia quindi problemi
nellapprossimazione polinomiale).
I test sono stati effettuati su matrici di dimensione 50 50, mentre il grado m dellinterpolazione si ferma a 45 47 in quanto a gradi superiori si verificano problemi di malcondizionamento che, probabilmente, potrebbero essere risolti con una scelta migliore della base
polinomiale della matrice di Vandermonde. Questo ci permetterebbe di raggiungere una
migliore convergenza del metodo che, soprattutto per la radice quadrata e il logaritmo,
osserviamo essere un po lenta.
Riportiamo di seguito i risultati con c = 0 e c = 4.

4.2. RISULTATI: UN PROBLEMA DI CONVEZIONE-DIFFUSIONE

27

(a) Esponenziale di matrice, c=0

(b) Esponenziale di matrice, c=4

(c) Radice quadrata di matrice, c=0

(d) Radice quadrata di matrice, c=4

(e) Logaritmo di matrice, c=0

(f) Logaritmo di matrice, c=4

28

CAPITOLO 4. DESCRIZIONE DEL METODO E RISULTATI

Appendice A

Codici MATLAB
Alleghiamo di seguito i codici scritti in linguaggio MATLAB utilizzati dal Metodo polinomiale descritto nel Capitolo 4.

A.1

Codice 1: Costruzione dellellisse

%------------------------------------------------------------------------% Input : matrice quadrata A


% Output : autovalori di A , semiassi e centro dell ellisse
%
che contiene lo spettro di A
%------------------------------------------------------------------------spect = eig ( A );
re_min = min ( real ( spect ));
re_max = max ( real ( spect ));
im_max = max ( imag ( spect ));
im_min = min ( imag ( spect ));
a = abs (( re_max - re_min )/2)*2;
b = abs (( im_max - im_min )/2)*2;
x0 =( re_max + re_min )/2
y0 =0;
%-------------------------------------------------------------------------% Ellipse
%-------------------------------------------------------------------------function z = ellipse ( theta ,a ,b , x0 , y0 )
z =( a /2)* cos ( theta )+( b /2)* i * sin ( theta )+ x0 + i * y0 ;

29

30

APPENDICE A. CODICI MATLAB

A.2

Codice 2: Costruzione della mesh

function [ fek , mesh_ellipse ,C , ind ]= afek_ellipse (a ,b , x0 , y0 , deg ,


extraction_type )
wam_type =2;
switch wam_type
case 1
fprintf ( \ n \ t N ^2 METHOD . );
mesh_ellipse = WAM_Ellipse (a ,b , x0 , y0 , deg );
case 2
fprintf ( \ n \ t N log ( N ) METHOD . );
C =5;
mesh_ellipse = WAM_Ellipse _nlogn (a ,b , x0 , y0 , deg , C );
end
fprintf ( \ n \ t WAM DIMENSION : %5.0 f , length ( mesh_ellipse ));
[ fek ,C , ind ]= approx_fekete ( mesh_ellipse , deg , extraction_type );

%-------------------------------------------------------------------------% ADDITIONAL ROUTINES .


%-------------------------------------------------------------------------%-------------------------------------------------------------------------% WAM_Ellipse
%-------------------------------------------------------------------------function Mn = WAM_Ellipse (a ,b , x0 , y0 ,n , C )
%
%
%
%

a , b : ELLIPSE AXIS .
x0 , y0 : ELLIPSE CENTER .
n : DEGREE .
C : WAM FACTOR .

% Mn : WAM ON THE ELLIPSE DEFINED BY a ,b , x0 , y0 , n .


if nargin < 6
C =200;
end
ell_cap =( a + b )/2;
mu = exp (1)/ ell_cap ;

A.3. CODICE 3: ESTRAZIONE DEI PUNTI DI LEJA

31

bv =2* pi ; av =0;
alpha = max (a , b );
NN =( n ^2)*( bv - av )* alpha * mu /2;
M = ceil ( NN * C /( C -1))+1;
k =0: M -1;
v = k *2* pi /( M -1);
Mn = ellipse (v ,a ,b , x0 , y0 );
%-------------------------------------------------------------------------% WAM_Ellipse
%-------------------------------------------------------------------------function Mn = WAM_Ellipse_nlogn (a ,b , x0 , y0 ,n , C )
%
%
%
%
%

a , b : ELLIPSE AXIS .
x0 , y0 : ELLIPSE CENTER .
n : DEGREE .
C : WAM FACTOR .
Mn : WAM ON THE ELLIPSE DEFINED BY a ,b , x0 , y0 , n .

if nargin < 6
C =200;
end
M = ceil ( C * n * log ( n ));
k =0: M -1;
v = k *2* pi /( M -1);
Mn = ellipse (v ,a ,b , x0 , y0 );

A.3

Codice 3: Estrazione dei Punti di Leja

function [ fek ,C , ind ] = approx_fekete ( mesh , deg , extraction_type )

% numero di iterazioni QR per ridefinire la base


niter =2;
% shift e riscalamento della base monomiale
b = sum ( mesh )/ length ( mesh ); % baricentro della mesh S = max ( abs ( mesh - b ));
S = max ( abs ( mesh - b ));
% coefficiente della riscalatura
z =( mesh - b )/ S ;
% mesh shiftata e scalata

32

APPENDICE A. CODICI MATLAB

% costruzione matrice di Vandermonde


for j =1: deg +1
V (j ,:)= z .^( j -1); % riga j - esima della matrice di Vandermonde
end ;
% fattorizzazioni QR
B =V ;
P = eye ( length ( V (: ,1)));
% matrice unitaria , memorizza i cambiamenti di base
for it =1: niter ,
[Q , R ]= qr (B ,0);
U = inv ( R ); % matrice di cambiamento di base
B=B*U;
% matrice di Vandermonde nella nuova base
P=P*U;
% memorizzazione cambiamento di base
end ;
% soluzione sistema lineare
C =B ; m = ones ( length ( C (: ,1)) ,1);
switch extraction_type
case 1
fprintf ( \ n \ t >> AFP . )
% vettore dei termini noti
w=C\m;
% indice dei pesi non nulli
ind = find ( abs ( w ) >0);
case 2
% algoritmo LU
fprintf ( \ n \ t >> DLP . )

[L ,U , Plu ] = lu (B , vector );
ind = Plu (1: size (U ,1));

A.4. CODICE 4: INTERPOLAZIONE CON IL METODO DI NEWTON

33

end
% punti di Fekete approssimati corrispondenti
fek = mesh ( ind );

A.4

Codice 4: Interpolazione con il metodo di Newton

A titolo di esempio, vediamo la routine m_leja.m nel caso dellesponenziale.


function Y = m_leja ( A )
deg =30;
% Estrazione punti di fekete / leja
[ fek , mesh_ellipse ,C , ind ]= afek_ellipse (a ,b , x0 , y0 , deg , extraction_type );
figure (3)
plot ( real ( fek ) , imag ( fek ) , r * )
% Interpolazione : calcolo delle differenze divise
XX = fek ;
YY = feval ( exp , XX );
[d , Df , c , f ] = n e w t o n _ i n t e r p o l a t i o n _ v e t t ( XX , YY , XX );
% ricorrenza a tre termini
m = length ( XX );
Y (: ,: ,1)= zeros ( size ( A )); Y (: ,: ,2)= f (1)* eye ( size ( A ));
for i =3: m
Y (: ,: , i )= Y (: ,: , i -1)+( d (i -1)/ d (i -2))*( A - XX (i -2)*
eye ( size ( A )))*( Y (: ,: , i -1) - Y (: ,: , i -2));
end
eA = expm ( A );
for i =1: m
E (: ,: , i )= Y (: ,: , i ) - eA ;
end
for i =1: m
norma ( i )= norm ( E (: ,: , i ));
end
plot ( log10 ( norma ))

34

APPENDICE A. CODICI MATLAB

Bibliografia
[1] L. Bos, J.-P. Calvi, N. Levenberg, A. Sommariva, M. Vianello, Geometric Weakly
Admissible Meshes, Discrete Least Squares Approximations and Approximate Fekete
Points, preprint, 2009.
[2] L. Bos, S. De Marchi, A.Sommariva, M.Vianello Computing multivariate Fekete and
Leja points by numerical linear algebra, 2010, preprint.
[3] L. Bos, S. De Marchi, A. Sommariva, M. Vianello, On Multivariate Newton
Interpolation at Discrete Leja Points, 2011, to appear.
[4] L. Bos, S. De Marchi, A. Sommariva, M. Vianello Weakly Admissible Meshes and
Discrete Extremal Sets, 2011, preprint.
[5] W. Dijkstra, M.E. Hochstenbach, Numerical approximation of the logarithmic capacity,
preprint
[6] Nicolas J. Higham, Function of Matrices: Theory and Computation, Siam, 2008.
[7] F. Piazzon, M. Vianello Analytic transformations of admissible meshes
[8] Ch. Pommerenke, On the Derivate of a Polynomial, Michigan Math. J. 6 (373-375),
1959.
[9] A. Sommariva, Apprssimazione di funzioni, Dispense del corso di Analisi Numerica
(last rev. 23/10/2010)
[10] M. Tsuji, Potential Theory in Modern Function Theory, Chelsea Publishing Co , 1975.
[11] Wikipedia, (Lebesgue Constant interpolation) http://en.wikipedia.org/wiki/
Lebesgue_constant_(interpolation)

35