Punti di Lebesgue sul disco - Math Unipd

Università degli studi di Padova
Corso di Laurea Triennale in Matematica
Punti di Lebesgue sul disco
Andrea Pinto
Relatori:
• Dott. Francesco Rinaldi
• Dott. Alvise Sommariva
6 Dicembre 2012
alle costanti della mia vita
Indice
Introduzione
1
1 Interpolazione polinomiale e costante di Lebesgue
1.0.1 Punti di Lebesgue . . . . . . . . . . . . . . . . . . . .
1.1 Richiami su alcuni nodi di interpolazione classici nell’intervallo
3
5
6
2 Algoritmi
2.1 Algoritmo Genetico . . . . . . . . . . . .
2.1.1 Selezione . . . . . . . . . . . . .
2.1.2 Mutazione . . . . . . . . . . . . .
2.1.3 Crossover . . . . . . . . . . . . .
2.1.4 Altri parametri . . . . . . . . . .
2.1.5 Alcune considerazioni . . . . . .
2.2 Direct search (Pattern Search) . . . . .
2.2.1 Parametri . . . . . . . . . . . . .
2.3 Combinazione di GA con Patternsearch .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
8
8
8
9
10
10
11
11
3 Funzione obiettivo
11
4 Un primo approccio
12
5 Secondo approccio: punti vincolati su cerchi concentrici
5.1 La suddivisione in k gruppi . . . . . . . . . . . . . . . . .
5.2 La scelta dell’angolo . . . . . . . . . . . . . . . . . . . . .
5.3 Confronto tra alcune configurazioni di raggi . . . . . . . .
5.4 Ottimizzando sia su raggi sia su angoli . . . . . . . . . . .
5.4.1 Confronto con la configurazione di raggi particolari
5.4.2 Confronto con altri autori . . . . . . . . . . . . . .
5.4.3 Confronto con la teoria . . . . . . . . . . . . . . . .
14
14
17
18
19
21
21
25
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6 Possibili sviluppi
27
A Alcuni dati
29
B Codici Matlab
34
Bibliografia
46
Introduzione
La ricerca di punti adeguati per l’interpolazione polinomiale è uno dei grandi
temi della teoria dell’approssimazione. Il problema consiste nel ricercare le
disposizioni dei punti che permettano l’interpolazione polinomiale col minor
errore possibile. Nel caso unidimensionale i risultati a livello sia puramente
teorico che numerico forniscono delle configurazioni quasi-ottime che corrispondono ai punti noti come Expanded-Chebyshev. Una lista di configurazioni di particolare interesse sono presenti nel lavoro di Boyd [2].
Nel caso multidimensionale il problema è più complesso ed è argomento
di studio per molti studiosi della teoria dell’approssimazione e del potenziale.
Configurazioni particolarmente convenienti sono quelle dei punti di Fekete,
che massimizzano il determinante della matrice di Vandermonde (rispetto a
una base polinomiale). Di recente sono stati introdotti i Punti approssimati
di Fekete che pure sono particolarmente buoni per l’interpolazione in domini
compatti relativamente arbitrari.
In generale, il proposito finale è di trovare punti che abbiano costante di
Lebesgue estremamente bassa, così che l’interpolante descriva una funzione
regolare con un errore prossimo a quello della migliore approssimazione polinomiale (ad un grado prefissato). L’analisi di questo problema è al momento
prettamente numerica ed è stata eseguita su domini particolarmente semplici
come il triangolo, il quadrato e il disco (cf. [3], [8], [4]). In questo senso, in
questo lavoro ci siamo concentrati al caso del disco bidimensionale cercando
configurazioni che minimizzassero tale costante ottenendo ulteriori miglioramenti rispetto ai già ottimi risultati presenti in letteratura.
In questo lavoro, dopo aver fornito dei veloci richiami sull’interpolazione
polinomiale e dopo aver definito in maniera rigorosa la costante di Lebesgue,
illustreremo come sia stato possibile ottenere delle configurazioni di punti con
una costante di Lebesgue particolarmente piccola. Inoltre proporremo diversi
confronti tra i dati che abbiamo raccolto nelle sperimentazioni numeriche sia
con quelli di altri autori sia con stime puramente teoriche.
1
2
1
Interpolazione polinomiale e costante di Lebesgue
Il nostro obiettivo è di fornire, per un certo valore n fissato, un “buon” insieme di punti {zn } = {(xi , yi )}i=1..N nel cerchio unitario di R2 . La bontà
di questi punti è espressa con una bassa costante di Lebesgue, che come vedremo sarà un buon indice di stabilità e della qualità dell’errore rispetto a
quello della miglior approssimazione.
∑d
Indichiamo con Pdn =< xn1 1 xn2 2 ...xnd d , 0 ≤
dei
i=1 ni ≤ n > (lo spazio
)
n+d
d
polinomi di grado totale n. Si può vedere che N = dim(Pn ) = n .
Sia Ω un dominio compatto di Rd . Un insieme di punti {zn } si dice unisolvente su Ω per l’interpolazione polinomiale di grado n, se esiste, per ogni
vettore γ = {γk }k=1...N , un unico polinomio pn in Pdn tale che
pn (zk ) = γk k = 1, ..., N
Segue direttamente da questa definizione una condizione di necessità per
l’unisolvenza: la cardinalità N di tale insieme {zn } deve essere uguale alla
dimensione di Pn .
Fissiamo nel dominio Ω una base < pi , i = 1, ..., N > di Pdn e denotiamo con
V = V (z1 , z2 , ..., zN ) la matrice quadrata di Vandermonde le cui componenti
sono
Vij = {pj (zi ) : i, j = 1, ..., N }
Definiamo ora i polinomi di Lagrange come
Lk (z) =
det(V (z1 , ..., zk−1 , z, zk+1 , ..., zN ))
det(V (z1 , ..., zN ))
k = 1, ..., N
(1)
e l’operatore di interpolazione su un insieme di punti P come il funzionale
Ln : (C(Ω), k.k∞ ) → Pdn
N
∑
Ln f =
f (zi )Li
i=1
Nel caso unidimensionale si può facilmente mostrare che
Lk (z) =
N
∏
z − z0 z − zk−1 z − zk+1 z − zN
z − zi
=
...
...
z
z
z
zk − zN
k − zi
k − z0
k − zk−1 zk − zk+1
i=0,i6=k
3
Se d = 1, e se i punti su cui si interpola sono tutti distinti, allora esiste ed è
unico il polinomio pn che interpola le coppie (zk , γk ).
Più in generale, per d generico, da (1), si vede che se l’insieme di punti è
unisolvente, si ha Lk (xs ) = δk,s per ogni k e per ogni s.
La costante di Lebesgue Λn (P) di un insieme di punti P è la norma
dell’operatore di interpolazione Ln :
∑
kLn f k∞
Λn (P) = kLn k =
= max
|Li |
x∈Ω
kf k∞
i=1
N
(2)
La grandezza di Λn (P) è in funzione dell’insieme dei punti di interpolazione
P, del dominio Ω e di Pdn ma non della base di quest’ultimo insieme poiché il
determinante di una generica matrice non dipende dalla base scelta. Vediamo
ora delle stime che ci fanno intuire l’importanza di una buona costante di
Lebesgue.
Teorema.
Sia Pdn lo spazio dei polinomi di grado totale n su Rd , sia Ω un insieme
compatto di Rd e sia P = {zi } ⊂ Ω un insieme di punti unisolvente per
l’interpolazione polinomiale di grado n. Sia inoltre Ln : (C(Ω), k.k∞ ) →
Pdn l’operatore di interpolazione polinomiale sui punti {zi } e sia Λn (P) la
corrispondente costante di Lebesgue, allora
1. kLn f − f k∞ ≤ (1 + Λn (P)) kf − φ∗n k∞ ove φ∗n ∈ Pdn è il polinomio di
grado n di miglior approssimazione per f.
2. Ln f − Ln f˜ ≤ Λn (P) · maxk f (zk ) − f˜(zk ) ove f˜ è una approssi∞
mazione di f.
Dimostrazione.
1. Notiamo che φ∗n − Ln φ∗n = 0 poiché φ∗n ∈ Pdn . Dunque
f −Ln f = f −φ∗n +φ∗n −Ln f = f −φ∗n +φ∗n −Ln φ∗n +Lφ∗n −Ln f = f −φ∗n +Ln (φ∗n −f )
Ma allora
kf − Ln f k∞ ≤ kf − φ∗n k∞ + kLn φ∗n − Ln f k∞ ≤
≤ kf − φ∗n k∞ + kLn k∞ kf − φ∗n k∞ = (1 + Λn (P)) kf − φ∗n k∞ .
4
∑
∑
∑N ˜
N
˜
2. Ln f − Ln f˜ = N
f
(z
)L
(z)
−
f
(z
)L
(z)
≤
((f
(z
)
−
f
(z
))L
(z)
≤
i
i
i
i
i
i
i
i
i
i
≤
N N
∑
∑
˜
˜
f
(z
)
−
f
(z
)
|L
(z)|
≤
max
f
(z
)
−
f
(z
)
|Li (z)|
i
i
i i
i i
i
Ma allora
Ln f − Ln f˜
∞
1.0.1
i
≤ kLn k∞ max f (zi ) − f˜(zi )
i
Punti di Lebesgue
Fissati Ω e Pdn i punti che minimizzano la costante di Lebesgue sono detti
Punti di Lebesgue. Tali punti non sono noti nemmeno nel caso univariato: in letteratura si ritiene che nell’intervallo limitato [a,b] gli “expandedChebyshev”
xj =
a + b (a − b) cos((2j − 1)π/(2n))
−
2
2
cos (π/(2n))
j = 1, ..., n
sono quasi-ottimi. Miglioramenti a questi punti sono stati trovati da [8].
Un’altra famiglia di punti molto importante è quella dei punti di Fekete che
sono definiti come i punti che massimizzano il valore assoluto del determinante della matrice di Vandermonde V. È facile vedere che per tali punti
vale
(
)
N
∑
n+d
Λn = max
|Lk (z)| ≤ N =
.
z∈Ω
n
k=1
Infatti applicando (1) si vede che Lk ≤ 1 per ogni k, poiché i punti di Fekete
massimizzano il determinante: quindi il denominatore di Lk è sempre maggiore del rispettivo numeratore. Da (2) deriva tale sovrastima di Λn (P).
La costante di Lebesgue Λn è invariante per trasformazioni affini. Questo
significa che conoscendo dei punti di interpolazione per l’intervallo [-1,1], con
una bassa costante di Lebesgue, li si conosce anche, per qualsiasi intervallo
[a,b], o nel caso bidimensionale noti i punti di Lebesgue di un dominio di
riferimento Ω∗ , si conoscono pure i punti di Lebesgue di domini Ω che sono
trasformazioni affini di Ω∗ .
5
1.1
Richiami su alcuni nodi di interpolazione classici
nell’intervallo
Analizzeremo adesso alcune famiglie di punti classiche per l’interpolazione.
Tali considerazioni verranno utilizzate nella sezione 5.3.
• Chebyshev. Questi punti nell’intervallo [1-1] sono gli zeri dei polinomi di Chebyshev Tn (x) = cos (n arccos (x)). Esiste una formulazione
ricorsiva di questi polinomi


T0 (x) = 1
T1 (x) = x


Tn+1 (x) = 2xTn (x) − Tn−1 (x), n > 1.
Per il grado n, tali punti, in un intervallo [a,b], risultano essere
( 2i − 1 )
(a + b) (b − a)
xi =
+
cos
π
2
2
2n
con i = 1, . . . , n.
• Expanded Chebyshev. Come descritto in [5] sono una dilatazione
dei punti di Chebyshev così che il primo e l’ultimo nodo siano estremi
dell’intervallo. Sono dati dalla seguente formulazione:
)
cos( (2j−1)π
2n
xi =
π
cos( 2n
)
i = 1...n
Gli Expanded Chebyshev risultano avere una costante di Lebesgue leggermente più piccola rispetto a quella dei punti di Chebyshev, e risultano avere una costante di Lebesgue quasi-ottimale per l’intervallo.
• Chebyshev-Lobatto. Questi punti nell’intervallo [-1,1] sono gli zeri
dei polinomi di Chebyshev di seconda specie, ovvero gli zeri di Un ove


U0 (x) = 1
U1 (x) = 2x


Un+1 (x) = 2x · Un (x) − Un−1
√
Tali polinomi sono ortogonali con la funzione peso 1 − x nell’intervallo
[-1,1]. Per il grado n, tali punti, risultano essere:
(k − 1 )
π
xi = + cos
n
con i = 1, . . . , n.
6
• Gauss-Legendre-Lobatto. Questi punti nell’intervallo [-1,1] sono gli
zeri dei polinomi di Legendre, ovvero gli zeri di Pn con Pn data dalla
formulazione ricorsiva


P0 = 1
P1 = x


xPn−1 − n−1
Pn−2
Pn = 2n−1
n
n
Tali punti sono molto utilizzati per le formule di quadratura utilizzando
come pesi
2
1
Ai =
, n > 1.
n(n + 1) (Pn (xi ))2
con i = 0, ..., n
2
Algoritmi
Precedentemente in [3], per il procedimento di minimizzazione, sono stati usati algoritmi active-set o BGFS. A causa del determinante di Vandermonde
che è nullo sulle configurazioni non unisolventi, la nostra funzione obiettivo non risulta essere particolarmente regolare ma con frequenti oscillazioni,
estremanti locali, punti di discontinuità e singolarità. L’utilizzo di metodi
gradiente quindi potrebbe non agevolare la ricerca di minimi. Inoltre con
questi metodi è più probabile convergere ad un estremo locale, invece di
minimizzare globalmente la costante di Lebesgue. In questo lavoro, invece,
abbiamo seguito un approccio diverso: come già in parte [8], abbiamo usato
algoritmi genetici di natura principalmente aleatoria o algoritmi di ricerca
diretta.
2.1
Algoritmo Genetico
Il primo algoritmo è Genetic Algorithm (GA) presente nel pacchetto di Matlab “Global Optimization Toolbox”. La diversità di GA è che invece di
eseguire una ricerca diretta di configurazioni ottimali, ad esempio lungo la
direzione gradiente , svolge una ricerca parallela, con un procedimento che ricorda l’evoluzione darwiniana. Vediamo GA in dettaglio. Fissato un certo intero NP, GA genera una popolazione in cui ogni individuo x(i) con i=1,...,NP,
è rappresentato da un vettore (nel nostro caso costituito dalla posizione di
nodi). La popolazione iniziale può essere generata in maniera casuale da GA
oppure messa in input. Come nell’evoluzione naturale, la popolazione per
passare alla generazione successiva, attraversa le fasi di selezione, mutazione
e crossover.
7
2.1.1
Selezione
La selezione è la scelta dei genitori per la prossima generazione. Per prima
cosa viene fatta una classifica degli elementi della popolazione, in base a
quanto ottimizzano la funzione obbiettivo. Da questa lista si scelgono poi gli
elementi da usare in base a certi criteri. Noi ne abbiamo usati principalmente
due: roulette e tournament. Roulette dà una percentuale a ogni elemento
della popolazione: bassa se è in cima alla classifica, alta se in fondo. Poi
in maniera casuale si sceglie chi selezionare. Tournament invece crea un
torneo in cui partecipa tutta la popolazione: ci sono sfide tra un numero
prefissato di elementi della popolazione e passa al turno successivo del torneo
solo la migliore di ogni gruppo. Questo criterio permette con sicurezza che
l’elemento migliore sia selezionato mentre quello Roulette permette maggiore
aleatorietà anche a costo di perdere un ipotetico genitore migliore.
2.1.2
Mutazione
Alcuni elementi della popolazione subiscono una mutazione. Ci sono diversi
modi per gestire questa mutazione. Noi abbiamo usato una distribuzione
Gaussiana centrata nello zero. Uno dei vantaggi di questa impostazione è
stata la possibilità di scegliere separatamente la deviazione standard della
prima e delle altre generazioni.
0
0
0
0
0
0
0
-0.01
-0.02
↓ mutazione ↓
0.14
2.1.3
0.03
-0.07
0.13
-1.17
Crossover
In questa fase viene gestita la creazione dei figli: avviene una combinazione tra i due genitori per dar vita ad un nuovo elemento della popolazione.
Ci sono diversi modi per gestire questa combinazione. Noi abbiamo usato
principalmente Scattered, TwoPoints e Intermediate. Scattered per prima
cosa crea un vettore binario casuale. Il figlio avrà la i-esima componente (o
gene) uguale a quella del primo genitore, se il vettore casuale ha la i-esima
componente uguale a 1, altrimenti avrà tale componente uguale a quella
8
del secondo genitore. TwoPoint per prima cosa sceglie in maniera random
due interi m e n tra 1 e il numero di variabili. L’algoritmo poi prende le
componenti (o geni) con indice minore o uguale ad m e quelle con indice
maggiore di n dal primo genitore mentre tutte le altre dal secondo. Intermediate crea invece i figli con una media pesata dei genitori. È controllata
unicamente dal singolo parametro ratio. Utilizzando una forma simbolica:
f iglio = genitore1 + rand · razio · (genitore2 − genitore1) ove rand è un
numero casuale tra 0 e 1. I primi due si sono rivelati forse più efficaci perché
vanno a modificare la posizione dei punti in maniera meno drastica, agendo
quasi componente per componente, mentre il terzo metodo crea una combinazione convessa dei genitori.
2.1.4
Altri parametri
Ora che abbiamo introdotto questi tre processi fondamentali illustreremo come viene creata la generazione successiva. Un numero prefissato di elementi
della popolazione rimane uguale al genitore. Questo numero abbiamo preferito tenerlo basso (da 1 a 4) per rendere più aleatorio l’algoritmo. Dei restanti
elementi una parte viene gestita dal crossover, un’altra invece dalla mutazione. La percentuale di partizione tra queste due viene introdotta in input con
un numero da 0 a 1. Essendo questo parametro particolarmente importante
abbiamo provato molti numeri in tutto l’intervallo, concentrandoci maggiormente intorno allo 0.8 poiché ritenuta la configurazione migliore.
Il nostro problema di ottimizzazione è vincolato, e nulla impedisce al crossover o alla mutazione di creare elementi della popolazione fuori dai nuovi
vincoli: per questo abbiamo dovuto inserire un numero elevato come penalità. Se un punto esce dal disco automaticamente gli viene associato un alto
valore in funzione obiettivo e quindi nella prossima generazione verrà scartato.
Un’impostazione, che abbiamo usato per aumentare l’aleatorietà, è di suddividere la popolazione in città e far agire l’algoritmo separatamente per
9
ognuna di queste. Inoltre ogni 20 o 30 generazioni le varie città si scambiano
una certa percentuale di elementi della popolazione.
Altra scelta che abbiamo fatto è stato legare GA con un altro algoritmo di
ricerca: Patternsearch. Una volta terminata l’esecuzione dell’algoritmo genetico, effettuiamo, a partire dal miglior punto esistente nella popolazione
finale, una ricerca locale utilizzando l’algoritmo pattern search. Ma vedremo
nel dettaglio, nella prossima sezione, come agisce questo algoritmo.
Un aspetto da considerare è la dimensione della popolazione: in teoria anche
questo parametro può influenzare la convergenza e la sua velocità, poiché
una popolazione più grande fornisce una varietà nell’evoluzione maggiore e
maggiori capacità di esplorazione in varie regioni. Per questo motivo in [8] si
osserva che una popolazione di 10N , ove N è il numero di parametri da determinare, è sicuramente buono. Tuttavia con gli esperimenti fatti sempre in
[8] si osserva che già con 100 individui si hanno ottimi risultati con un costo
computazionale molto più basso. Per questi motivi abbiamo deciso di utilizzare anche noi 100 in questo parametro. Altri parametri importanti sono il
numero di generazioni totali e di stallo. Facile capire che questi parametri ci
indicano la durata del nostro processo: un numero molto alto consentirà la
convergenza. Abbiamo posto 500 per il primo e 100 per il secondo. A livello
sperimentale abbiamo verificato la bontà di tali scelte.
2.1.5
Alcune considerazioni
Come abbiamo illustrato nei paragrafi precedenti, ad ogni iterazione (o generazione), viene selezionata una popolazione più adatta e l’algoritmo dovrebbe
convergere al minimo globale. Sfortunatamente non esiste alcuna garanzia
teorica di convergenza locale: il metodo è soggetto alla possibilità di stagnazione in un minimo locale. Analogamente, la velocità di convergenza non è
stimabile a causa della natura aleatoria. Ricordiamo comunque con algoritmo simile è stato usato con successo già in [8] in un problema analogo di
minimizzare la costante di Lebesgue.
2.2
Direct search (Pattern Search)
Direct search è un metodo per risolvere problemi di ottimizzazione che non
richiede alcuna informazione circa il gradiente della funzione obiettivo. A differenza dei metodi di ottimizzazione tradizionali che utilizzano informazioni
sul gradiente o più derivate ��per cercare un punto ottimale, un algoritmo di
ricerca diretta cerca in un insieme di punti intorno al punto attuale, cercandone uno cui il valore della funzione obiettivo è inferiore al valore nel punto
corrente. È possibile utilizzare DirectSearch per risolvere i problemi per i
10
quali la funzione obiettivo non è derivabile, o non continua o nei casi in cui
non è nota l’espressione analitica di tale funzione.
In Matlab sono implementati tre algoritmi di DirectSearch: generalized
pattern search (GPS), the generating set search(GSS) , e the mesh adaptive
search (MADS). Questi algoritmi sono tutti inglobati nella routine Pattern
Search presente nel pacchetto “Global Optimization Toolbox”. Ad ogni passo,
questa routine cerca un insieme di punti, chiamato mesh, attorno al corrente
punto, calcolato al passo precedente o al dato iniziale. La mesh è un insieme
di punti generato utilizzando uno specifico insieme di direzioni di ricerca a
partire dal punto corrente. Se l’algoritmo trova un punto nella mesh che
migliora la funzione obiettivo rispetto al punto corrente, il nuovo punto diventa il punto corrente al passaggio successivo dell’algoritmo. Si crea così
una successione di punti che convergerà ad un minimo.
L’algoritmo GPS utilizza vettori direzionali fissi. L’algoritmo GSS è identico all’algoritmo GPS, tranne quando ci sono vincoli lineari, e quando il punto corrente è vicino a un confine vincolo lineare. L’algoritmo MADS utilizza
una selezione casuale di vettori per definire la mesh.
2.2.1
Parametri
Intuibile che come primo parametro dobbiamo scegliere quale usare tra gli
algoritmi di cui sopra abbiamo discusso: noi ci siamo focalizzati sul primo.
C’è la possibilità di decidere se verificare tutti i punti della mesh o solo alcuni:
noi abbiamo optato per la prima soluzione anche se in questo modo abbiamo
un costo computazionale più alto. Altra opzione è quella di far eseguire un
altro algoritmo dopo che questo ha concluso: nel caso in cui routine venisse
utilizzata non da sola abbiamo deciso di spegnere questa funzione.
2.3
Combinazione di GA con Patternsearch
Direct Search è un algoritmo globalmente convergente, quindi il suo utilizzo
all’interno di un framework di ottimizzazione globale basato su un algoritmo
di tipo probabilistico (come l’algoritmo genetico), può migliorare le performance e facilitare l’ottenimento di una soluzione del problema. Per questo
motivo noi abbiamo scelto di combinare Ga con Patternsearch.
3
Funzione obiettivo
Per quanto riguarda il calcolo della costante di Lebesgue di ogni insieme di
punti P = {zi } unisolvente su Ω, abbiamo in parte utilizzato le tecniche
11
presenti in [3]. Data una mesh di riferimento sufficientemente fitta X ma di
cardinalità finita, si valuta la costante di Lebesgue Λn sui punti test di X
(invece che su tutto il dominio) e si suppone
Λn (P) = kLn k = max λn (z; P) ≈ max λn (z, P)
z∈Ω
z∈X
dove λn è la funzione di Lebesgue:
λn (z, P) =
N
∑
|Li (z)| , z ∈ Ω
i=1
Tale procedimento è lecito perché queste sono mesh debolmente ammissibili.
In [1] si definisce Mesh Debolmente Ammissibile di Ω una successione di
sottoinsiemi discreti An ∈ Ω tali che
kpkΩ ≤ C(An ) kpkAn , ∀p ∈ Pdn (Ω)
con card(An ) ≥ N e C(An ) abbia una crescita al massimo in modo polinomiale in n. Se inoltre C(An ) è limitata si parla di Mesh Ammissibile. Utilizziamo quindi griglie che determinano la norma dei polinomi a meno di costanti. In questo caso, abbiamo usato An aventi al massimo di 2502 = 62500
punti, come già in [3, 8].
In questo modo abbiamo che
∑N
∑N
Λn (P) − Λ̃n (P) ≤ maxz∈Ω i=1 |Li (z)| − maxz∈An i=1 |Li (z)| ≤
∑
∑
N
N
≤ i=1 (kLi kΩ − kLi kAn ) ≤ i=1 (C(An ) − 1) kLi kAn ≤
≤ N |C(An ) − 1| max kLi kAn
i=1..N
ove con Λ̃n (P) abbiamo indicato la costante di Lebesgue ristretta all’insieme
An . L’uso di queste mesh è una garanzia che la discretizzazione del dominio
scelta è buona e, valutando la funzione di Lebesgue esclusivamente su questi
nodi, si ottiene una buona approssimazione della costante di Lebesgue.
4
Un primo approccio
Di seguito, intendiamo calcolare punti unisolventi per l’interpolazione sul
disco unitario
Ω = {(x, y) : x2 + y 2 ≤ 1}
12
che abbiano costante di Lebesgue particolarmente piccola. Il proposito è determinare set di punti per cui questo valore sia inferiore a quello ottenuto nei
lavori [1,2,7]. Per prima cosa abbiamo modificato i codici di [3] utilizzando
prima un algoritmo genetico (che abbrevieremo con GA) e poi Pattern-Search
al posto di fmincon. Ricordiamo a tal proposito che le routines Matlab ga
e patternsearch implementano tali ottimizzatori. Dopo una prima fase di
taratura dei suddetti algoritmi di ottimizzazione, nonostante la capacità di
sorpassare possibili minimi locali ma non globali, abbiamo riottenuto le configurazioni di punti di [3] e quindi non abbiamo migliorato il valore minimo
della costante di Lebesgue.
Nel caso di GA abbiamo riscontrato il problema, che impostando una popolazione iniziale casuale la convergenza era troppo lenta, impedendo di raggiungere risultati positivi in tempi ragionevoli. Per gradi bassi come 6 e 7
dopo venti ore di calcolo eravamo ancora ben lontani da una costante di Lebesgue paragonabile con quella trovata da [3] e [8]. Inoltre spesso abbiamo
notato la difficoltà da parte dell’algoritmo di uscire da intorni di un minimo
locale: di frequente infatti l’algoritmo rimaneva fermo nello stesso intorno
anche per diverse ore. Problemi di stagnazione simili si sono presentati, impostando come popolazione iniziale, configurazioni di punti particolarmente
“buone” come i quasi-punti di Lebesgue e di Fekete trovati da [3]. Pur variando molto i parametri dell’algoritmo, non siamo riusciti ad evitare questo
stagnamento.
Con Pattern-Search, invece, abbiamo cercato, a livello locale, miglioramenti negli intorni dei punti “buoni” trovati da [3]. Anche in questo caso non
abbiamo avuto fortuna: nell’intorno della nostra ricerca i punti iniziali risultavano essere quelli con la costante di Lebesgue più bassa.
Non abbiamo avuto migliori risultati combinando insieme GA con Patternsearch: partendendo da un punto iniziale casuale la convergenza si è rivelata
troppo lenta, partendo da punti noti è stato impossibile evitare fenomeni di
stagnazione.
Abbiamo quindi abbandonato questo approccio spostando la nostra attenzione a tentativi di ottimizzare la costante di Lebesgue per punti con configurazioni particolari.
13
5
Secondo approccio: punti vincolati su cerchi concentrici
Riprendendo un’idea presente in [4] siamo riusciti a trovare dei miglioramenti rispetto a [3, 8, 4] per la ricerca dei punti di Lebesgue. Nel caso di
2
interpolazione con un(polinomio
) di grado n in R determineremo insiemi uniN =n+2
solventi composti di
punti che saranno opportunamente disposti in
n
M = b n2 c + 1 cerchi di raggio rj con j=1...M. Dividiamo i cerchi in k gruppi:
n
v1 + ... + vk = b c + 1
2
vi ∈ N
i = 1, .., k.
col j-esimo gruppo che contiene esattamente vj cerchi. In ogni cerchio del
j-esimo gruppo poniamo 2nj + 1 nodi equidistanti rispetto all’angolo. La
scelta di nj è data da:
n1 = n − v1 + 1,
n − 2 = n − 2v1 − v2 + 1,
:
nk = n − 2v1 − ... − 2vk−1 − vk + 1.
Si può verificare facilmente che
k
∑
vj · (2nj + 1) = N
j=1
Una volta fissati i parametri nk , l’insieme dei punti è univocamente determinato dalla lunghezza dei raggi, dall’angolazione tra un fissato punto di
interpolazione di ogni cerchio con un determinato semiasse e dalla suddivisione nei k gruppi.
5.1
La suddivisione in k gruppi
In [4], gli autori asseriscono che, al crescere del numero dei gruppi di cerchi,
k, la costante di Lebesgue decresce. Vediamo nel dettaglio tale fenomeno per
n = 6. In questa situazione usiamo come configurazione per i raggi, i nodi
positivi di Chebyshev-Lobatto nell’intervallo [-1,1] di grado 8 o nel caso che
ci sia solo un punto nel cerchio più interno, di grado 7. Sul k-simo cerchio,
equidistribuiti rispetto all’angolo disponiamo 2nk + 1 punti, supponendo che
il primo di questi punti abbia ordinata il cui valore è 0.
14
Figura 1:
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
−0.2
−0.4
−0.4
−0.6
−0.6
−0.8
−0.8
−1
−1
−0.5
0
0.5
−1
−1
1
(a) k = 1
−0.5
0
0.5
1
(b) k = 2, primo caso
1. per k = 1, abbiamo la scelta obbligata di v1 = 4 e troviamo una
configurazione con 7 nodi equispaziati in ciascuno dei 4 cerchi come in
figura 2(a). In tal caso risulta una costante di Lebesgue di 4025.6;
2. per k = 2 abbiamo diverse configurazioni possibili:
• se v1 = 2 e v2 = 2 troviamo una configurazione con 3 punti equispaziati nei due cerchi interni e 11 nei due esterni come in figura
2(b).In tal caso risulta una costante di Lebesgue di 67.2376;
• Prendendo invece v1 = 1 e v2 = 3 troviamo una configurazione
con 13 punti equispaziati nel cerchio esterno e 5 nei tre interni
interni come nella figura 3(a). In tal caso risulta una costante di
Lebesgue di 98.1135;
• Viceversa prendendo v1 = 3 e v2 = 1 otteniamo una configurazione
con 9 punti equispaziati nei tre cerchi esterni e solo 1 in quello
interno come nella figura 3(b). In tal caso risulta una costante di
Lebesgue di 546.47;
3. Anche con k = 3 abbiamo diverse possibili configurazioni
• se v1 = 1, v2 = 1 e v3 = 2 otteniamo una configurazione con
13 punti equispaziati nel cerchio esterno, 9 in quello intermedio
e 3 nei due interni come in figura 4(a). In tal caso abbiamo una
costante di Lebesgue di circa 13.52;
• se v1 = 1, v2 = 2 e v3 = 1 troviamo 13 punti nel cerchio esterno, 7
punti nei due intermedi e 1 in quello interno come in figura 4(b).In
tal caso abbiamo una costante di Lebesgue di circa 20.63;
15
Figura 2:
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
−0.2
−0.4
−0.4
−0.6
−0.6
−0.8
−0.8
−1
−1
−0.5
0
0.5
−1
−1
1
(a) k = 2, secondo caso
−0.5
0
0.5
1
(b) k = 2, terzo caso
Figura 3:
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
−0.2
−0.4
−0.4
−0.6
−0.6
−0.8
−0.8
−1
−1
−0.5
0
0.5
−1
−1
1
(a) k = 3, primo caso
−0.5
0
0.5
1
(b) k = 3, secondo caso
• se v2 = 2, v2 = 1 e v3 = 1 otteniamo una configurazione con 11
punti equispaziati nei due cerchi esterni, 5 in quello intermedio e
1 in quello interno come in figura 5(a). In tal caso abbiamo una
costatante di Lebesgue di circa 56.74;
4. Per k = 4 abbiamo un’unica configurazione possibile con v1 = 1, v2 = 1,
v3 = 1 e v4 = 1 ovvero con 13 punti equispaziati nel cerchio esterno,
9 in quello successivo, 5 in quello intermedio e solo 1 in quello interno
come in figura 5(b).In tal caso abbiamo una costante di Lebesgue di
5.48.
Abbiamo visto dunque che nel caso n = 6 la costante di Lebesgue decresce
al crescere del numero dei gruppi dei cerchi. Considerazioni simili possono
16
Figura 4:
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
−0.2
−0.4
−0.4
−0.6
−0.6
−0.8
−0.8
−1
−1
−0.5
0
0.5
−1
−1
1
(a) k = 3, terzo caso
−0.5
0
0.5
1
(b) k = 4
essere fatte per tutti i gradi.
5.2
La scelta dell’angolo
In precedenza abbiamo richiesto che il k-simo cerchio contenesse il punto
(rk · cos(θ), rk · sin(θ)) con θ = 0.
Supponiamo ora che sul k-simo disco siano più in generale distribuiti m
punti
(k)
xj = (rk · cos(θk + s), rk · sin(θk )), k = 1, . . . , m,
con θk arbitrario e s = 2π/m.
n
EC
EC-opt
n
EC
EC-opt
1
1.67
1.67
11
9.00
8.85
2
3
4
5
6
7
8
9
10
1.99 2.69 3.32 3.86 4.42 5.20 5.80 6.77 7.85
1.99 2.62 3.30 3.84 4.35 5.17 5.78 8.70 7.80
12
13
14
15
16
17
18
19
10.44 12.54 14.82 17.39 21.56 26.48 32.27 40.14
10.36 12.34 14.43 17.28 20.96 25.60 31.92 39.49
Tabella 1: Confronto tra le costanti di Lebesgue di set di punti aventi configurazioni con raggi dati dai nodi di Expanded-Chebyshev positivi di grado
n+1 con angoli casuali con quelli ottenuti tramite ottimizzazione con GA.
Risulta lecito domandarsi se una scelta opportuna di questi θk migliori
decisamente la costante di Lebesgue rispetto alle altre.
17
20
50.83
49.06
Consideriamo le configurazioni con raggi con una lunghezza uguale alla distanza dall’origine ai nodi expandend-Chebyshev positivi di grado n+1 e con
la divisione ottimale in gruppi trovata nel paragrafo precedente. Presentiamo
nella Tabella 5.2 un confronto tra le costanti di Lebesgue ottenute con angoli
casuali con quelle ottenute ottimizzando sull’angolo indicati rispettivamente
con EC e EC-opt.
Ottimizzando sugli angoli θk la funzione obiettivo tramite GA, seguito da
Pattern-Search, come si deduce dalla tabella, i miglioramenti sulla costante
di Lebesgue sono molto limitati.
5.3
Confronto tra alcune configurazioni di raggi
Dando per accettata la configurazione ottimale trovata nella sezione 5.1, facciamo un confronto tra famiglie di punti i cui raggi corrispondano ai valori
non negativi di classiche famiglie di punti in [−1, 1].
Riportiamo una tabella e un grafico con alcuni valori della costante di
Lebesgue, ottenuti con la costruzione di cui abbiamo discusso sopra, utilizzando, per stabilire i raggi, le varie famiglie classiche di nodi oltre ai nodi
equispaziati e ai punti di Lebesgue trovati da [8] per l’intervallo. Indicheremo i nodi Expandend Chebyshev con EC, i Chebyshev-Lobatto con CL, i
Gauss-Legendre-Lobatto con LL, i quasi punti di Lebesgue trovati da [8] per
l’intervallo con M e i nodi equispaziati con Eq.
n
EC
CL
GLL
M
Eq
n
EC
CL
GLL
M
Eq
1
1.67
1.67
2.64
1.67
1.67
11
9.00
13.66
11.33
9.29
42.07
2
3
4
5
6
1.99 2.69 3.32 3.86 4.42
1.99 2.63 3.24 4.29 5.48
3.80 4.99 5.87 6.80 7.50
1.99 2.65 3.32 3.85 4.43
2.33 2.63 3.82 4.28 5.42
12
13
14
15
10.44 12.54 14.82 17.39
17.06 21.47 26.50 33.01
11.91 12.52 12.99 14.69
10.49 13.63 15.16 18.17
46.27 118.6 125.7 360.4
7
5.20
6.49
8.45
5.22
7.55
16
21.56
42.77
17.76
21.89
366.7
8
5.80
7.63
9.14
5.82
8.92
17
26.48
55.06
21.45
29.08
1145
9
6.77
9.56
9.99
6.79
16.63
18
32.27
70.45
25.69
34.37
1122
10
7.85
11.52
10.61
7.87
18.85
19
20
40.14 50.83
91.62 120.50
31.30 39.02
41.99 54.28
3749
3558
Tabella 2: Confronto tra le costanti di Lebesgue di set di punti aventi configurazioni con raggi dati da famiglie di nodi per gradi n compresi tra 1 e
20.
18
Figura 5: Confronto tra le costanti di Lebesgue di set di punti aventi configurazioni con raggi dati da famiglie di nodi classiche.
140
EC
CL
120
LL
M
100
80
60
40
20
0
0
2
4
6
8
10
12
14
16
18
20
La tabella evidenzia come i punti equispaziati determinino come nel caso
dell’intervallo un set di punti con un’alta costante di Lebesgue. Gli Expanded
Chebyshev e i punti di Lebesgue di [8] forniscono sets di punti con una
costante simile: i primi risultano leggermente migliori per il nostro problema.
In ogni caso, come si vede nel grafico i Expanded Chebyshev, i punti di [8] e
i Gauss-Legendre-Lobatto hanno un ottimo andamento col crescere di n.
5.4
Ottimizzando sia su raggi sia su angoli
Illustriamo ora i risultati ottenuti ottimizzando tramite l’algoritmo genetico GA e Pattern-Search, prima sui raggi e poi sugli angoli. In [4] infatti
si afferma che non risulta fondamentale ottimizzare il valore delle variabili
angolari: in parte abbiamo verificato questa affermazione in 5.2. Abbiamo
però deciso di non trascurare completamente il valore delle variabili angolari
ma semplicemente di considerarle in un secondo momento. In tal modo il
tempo di esecuzione del nostro codice è risultato dell’ordine dei minuti per i
gradi piu’ bassi, mentre per quelli piu’ alti e’ stato comunque inferiore alle
10 ore. Durante tali processi abbiamo usato la divisione in gruppi ritenuta
ottima nella sezione 5.1. Consci del fatto che l’ottimizzazione sugli angoli
19
avrebbe inciso poco sul risultato finale, abbiamo utilizzato in questo caso un
dato iniziale casuale. Riportiamo ora i risultati trovati da [3] e [8] confrontandoli con quelli trovati da noi in questa sezione: nella tabella e nel grafico
indichiamo con BSV quelli introdotti da[3], con M quelli descritti da [8] e
con CYIB-Opt quelli calcolati in questo lavoro, seguendo idee presenti in [4].
Grado
BSV
M
CYIB-Opt
Grado
BSV
M
CYIB-Opt
1
1.67
1.67
1.67
11
8.48
7.84
7.20
2
1.99
1.99
1.99
12
9.65
8.97
7.93
3
4
5
6
7
8
9
10
2.47 2.97 3.50 4.30 5.08 5.43 6.73 7.62
2.47 2.97 3.49 4.10 5.00 5.38 6.54 7.14
2.47 2.97 3.49 4.26 4.76 5.32 5.90 6.50
13
14
15
16
17
18
19
20
11.98 12.39 14.13 17.44 18.88 27.17 28.29 29.68
10.14 11.14 13.08 14.72 14.92 16.04 18.27 20.31
8.73 9.64 10.65 11.82 13.13 14.63 16.46 18.45
Tabella 3: Confronto tra le costanti di Lebesgue trovate da noi con alcune
presenti in letteratura.
Come si nota dalle tabelle sulle costanti di Lebesgue, per gradi bassi i nuovi set di punti non migliorano gli ottimi risultati precedentemente ottenuti
in [3] e [8], mentre hanno costanti di Lebesgue significativamente più basse
all’aumentare del grado.
20
5.4.1
Confronto con la configurazione di raggi particolari
Naturale ora domandarsi se la configurazione ottenuta ottimizzando sui raggi
è simile a una di quelle ottenute usando le famiglie di nodi classiche per
l’intervallo.
EC
CL
LL
raggi CYIB−Opt
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
EC
CL
LL
raggi CYIB−Opt
1
0
(a) n = 10
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
(b) n = 13
Figura 6: Distribuzioni di alcuni raggi notevoli per n = 10 e n = 13.
Nei grafici illustriamo solo i casi n = 10 e n = 13, pur avendo verificato
che cio’ accade anche piu’ in generale per n ≤ 20. Vediamo che tutti i nodi
riportati nel grafico tendono ad essere più fitti verso 1 e più radi verso 0. I
raggi che abbiamo ottenuto tramite l’ottimizzazione pur prossimi alle altre
classiche famiglie di punti univariati, non sembrano coincidere con una delle
stesse.
5.4.2
Confronto con altri autori
In questa sezione confrontiamo le configurazioni da noi ottenute con quelle
presentate in [3]. Osserviamo che mentre in [3] i punti non hanno vincoli
particolari, eccetto di stare nel disco unitario, quelli da noi introdotti, seguendo [4], richiedono di stare in cerchi concentrici e di avere una opportuna
equispaziatura rispetto agli angoli.
Nelle figure 7, 8 e 9, confrontiamo le loro distribuzioni per i casi n = 7,
n = 13 e n = 20. Denoteremo i punti descritti in [3] con BSV mentre quelli
di questo lavoro con CYIB-Opt.
Le distribuzioni sono simili, con punti che in [3] sono approssimativamente
su cerchi e equispaziati rispetto agli angoli, disposti in k poligoni regolari con
numero di vertici uguale al numero dei nodi nel rispettivo cerchio della nostra
configurazione.
Nella Figura 10, confrontiamo le costanti di Lebesgue proposte in [3], con
quelle in [8] (denotate con M ) e ottenute dalla nostra ottimizzazione.
21
Figura 7: Grado n = 7. A sinistra: distribuzione dei punti ottenuti in [3],
denotati con BSV. A destra: distribuzione dei punti ottenuti in questo lavoro,
denotati con CYIB-Opt.
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
−0.2
−0.4
−0.4
−0.6
−0.6
−0.8
−0.8
−1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
−1
−1
1
−0.8
−0.6
(a) BSV
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
(b) CYIB-Opt
Figura 8: Grado n = 13. A sinistra: distribuzione dei punti ottenuti in
[3], denotati con BSV. A destra: distribuzione dei punti ottenuti in questo
lavoro, denotati con CYIB-Opt.
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
−0.2
−0.4
−0.4
−0.6
−0.6
−0.8
−0.8
−1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
−1
−1
1
(a) BSV
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
(b) CYIB-Opt
22
0.6
0.8
1
Figura 9: Grado n = 20. A sinistra: distribuzione dei punti ottenuti in
[3], denotati con BSV. A destra: distribuzione dei punti ottenuti in questo
lavoro, denotati con CYIB-Opt.
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
−0.2
−0.4
−0.4
−0.6
−0.6
−0.8
−0.8
−1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
−1
−1
1
−0.8
−0.6
(a) BSV
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
(b) CYIB-Opt
Figura 10: andamento delle costanti di Lebesgue di CYIB-Opt, di BSV e di
M
30
CYIB−Opt
BSV
M
25
20
15
10
5
0
0
2
4
6
8
10
23
12
14
16
18
20
Per completezza riportiamo anche delle tabelle ( rispettivamente 4, 5)
con i valori del determinante della matrice di Vandermonde V (rispetto la
base di Koornwinder), del condizionamento di questa sia per i punti trovati
in questa sezione sia per quelli trovati in [3] e [8]. Inoltre riportiamo i dati
trovati da [3] circa i punti di Fekete.
Come si vede dalle tabelle, i valori assoluti determinanti di V hanno valori
molto elevati prossimi a quelli dei punti di Fekete, ciò nonostante tali matrici
restano ben condizionate.
Valore assoluto del determinante di Vandermonde
Grado
1
2
3
4
5
BSV
4.95E−1 2.12E+0 2.97E+1 2.07E+3 7.03E+5
M
4.95E−1 2.12E+0 2.97E+1 2.11E+3 7.11E+5
CYIB-Opt 4.95E−1 3.69E−1 2.91E+1 1.21E+3 1.32E+6
BSV-F
4.95E−1 2.13E + 0 3.44E + 1 3.49E + 3 2.03E + 6
Grado
6
7
8
9
10
BSV
1.10E+10 4.15E+13
2.87E19
1.74E+25 2.28E+34
M
1.03E+10 4.14E+13 2.96E+19 2.29E+25 1.52E+34
CYIB-Opt 8.09E+9
2.27E+14 7.18E+18 1.02E+26 1.43E+34
BSV-F
1.13E + 10 4.20E + 14 1.81E + 20 1.02E + 27 6.72E + 34
Grado
11
12
13
14
15
BSV
2.96E+38 1.06E+48 4.08E+58 2.34E+76 2.38E+89
M
2.52E+43 8.91E+52 2.30E+60 7.24E+75 1.65E+89
CYIB-Opt 5.76E+42 3.82E+52 2.99E+63 6.70E+73 1.90E+85
BSV-F
4.88E + 43 6.51E + 53 7.11E + 64 3.04E + 77 1.57E + 91
Grado
16
17
18
19
20
BSV
3.51E+97
M
4.36E+99
8.42E+119 1.76E+137 3.93E+155 7.96E+176
CYIB-Opt 2.33E+103 3.71E+116 7.90E+135 2.58E+153 6.75E+173
BSV-F
6.74E + 105 3.22E + 122 9.56E + 139 8.85E + 158 3.72E + 179
Tabella 4: Confronto tra i determinanti della matrice di Vandermonde per i
set di punti BSV (cf. [3]), M (cf. [8]), i nuovi CYIB-Opt oltre i punti BSV-F
(di [3] che hanno determinante particolarmente elevato.
24
Numero di condizionamento della matrice
Grado
1
2
3
BSV
2.98E+0 5.33E+0 1.08E+1
M
2.98E+0 5.13E+0 1.08E+1
CYIB-Opt 2.98E+0 5.43E+0 1.05E+1
BSV-F
2.99E + 0 5.33E + 0 1.06E + 1
Grado
6
7
8
BSV
2.84E+1 2.55E+1 3.58E+1
M
2.84E+1 2.83E+1 3.53E+1
CYIB-Opt 2.77E+1 3.35E+1 4.33E+1
BSv-F
2.65E + 1 3.28E + 1 4.33E + 1
Grado
11
12
13
BSV
7.85E+1 1.06E+1 9.55E+1
M
7.82E+1 1.07E+1 1.24E+2
CYIB-Opt 7.12E+1 8.06E+1 1.16E+2
BSV-F
6.88E + 1 7.40E + 1 1.09E + 2
Grado
16
17
18
BSV
1.43E+2
M
2.12E+2 2.12E+2 2.66E+2
CYIB-Opt 1.65E+2 1.97E+2 2.39E+2
BSV-F
2.32E + 2 2.42E + 2 2.22E + 2
di Vandermonde.
4
5
1.32E+1 1.55E+1
1.49E+1 2.12E+1
1.43E+1 1.93E+1
1.39E + 1 1.65E + 1
9
10
5.34E+1 6.37E+1
5.52E+1 6.95E+1
4.48E+1 6.33E+1
4.80E + 1 6.09E + 1
14
15
1.18E+2 1.52E+2
1.49E+2 1.59E+2
3.66E+3 1.73E+4
1.12E + 2 1.25E + 2
19
20
2.96E+2 3.44E+2
1.34E+3 4.05E+2
3.60E + 2 2.44E + 2
Tabella 5: Confronto tra i condizionamenti della Matrice di Vandermonde
per i set di punti BSV (cf. [3]), di M (cf. [8]) e i nuovi CYIB-Opt, oltre
i punti BSV-F che hanno valore assoluto del determinante di Vandermonde
particolarmente elevato.
5.4.3
Confronto con la teoria
In [9] si ricorda che la stima teorica
della costante di Lebesgue per i punti di
√
Lebesgue nel disco: Λn = O( n + 1). Vogliamo ora confrontare la costante
di Lebesgue dei punti trovati con questa puramente
teorica. Nel grafico 12(a)
√
abbiamo rappresentato l’andamento di Λn = n + 1 e le costanti di Lebesgue
Λ̃n trovate nella sezione 5.4 (indicate con CIYT):. Si vede subito che, pur
a meno di una costante moltiplicativa, l’andamento non sembra essere lo
stesso, specialmente per gradi prossimi a 20.
√
n+1
Λ̃n
25
Figura 11: Confronto tra la costante di Lebesgue dei punti CYIB-Opt con
l’andamento asintotico dei punti di Lebesgue.
20
1
CYIB−Opt
stima teorica
18
0.9
16
0.8
14
0.7
12
10
0.6
8
0.5
6
0.4
4
0.3
2
0
0
2
4
6
8
10
12
14
16
18
0.2
20
0
2
4
6
8
10
12
14
16
18
20
√
(b) Tapporto tra n + 1 e le costanti
di Lebesgue trovate da CYIB-Opt.
(a) Andamento delle costanti di Lebesgue
Se l’andamento fosse asintoticamente uguale, il rapporto tenderebbe al
crescere di n ad una costante.
Proponiamo la tabella 5.4.3 e il grafico 12(b) circa tali considerazioni.
√grado
n+1
Λ̃n
√
n + 1/Λ̃n = C
√grado
n+1
Λ̃n
√
n + 1/Λ̃n = C
1
1.41
1.67
0.85
11
3.46
7.20
0.48
2
1.73
1.99
0.87
12
3.61
7.93
0.45
3
2.00
2.59
0.77
13
3.74
8.73
0.43
4
2.24
3.20
0.70
14
3.87
9.64
0.40
5
6
7
8
9
10
2.45 2.65 2.83 3.00 3.16 3.32
3.70 4.26 4.76 5.32 5.90 6.50
0.66 0.62 0.59 0.56 0.54 0.51
15
16
17
18
19
20
4.00 4.12 4.24 4.36 4.47 4.58
10.65 11.82 13.13 14.63 16.42 18.45
0.38 0.35 0.32 0.30 0.27 0.25
Tabella 6: Confronto tra le costanti di Lebesgue di CYIB-Opt con
26
√
n + 1.
6
Possibili sviluppi
Ci poniamo il problema di trovare a partire da CYIB-Opt, configurazioni
unisolventi che abbiano migliori costanti di Lebesgue.
Di conseguenza, alleggeriamo i vincoli, cercando configurazioni vicine a
quelle di CYIB-Opt con migliori costanti di Lebesgue. Usiamo come punto di
partenza la configurazione trovata nella sezione precedente. Come abbiamo
visto i nodi sono disposti in cerchi concentrici. Ora consideriamo un determinato cerchio di raggio rk che contiene 2nk + 1 nodi. Disponiamo i primi nk
nodi in un cerchio di raggio rk1 e gli altri nk + 1 nodi in un cerchio di raggio
rk2 senza modificarne l’angolo: nella figura 12 è presentato il confronto per
n = 6 tra la vecchia configurazione e quella nuova data con raggi rki uguali
ai nodi di Chebyshev di grado 13. Ovviamente ponendo sia rk1 , sia rk2 uguali
Figura 12: Confronto per n = 6 tra vecchia e nuova configurazione
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
−0.2
−0.4
−0.4
−0.6
−0.6
−0.8
−0.8
−1
−1
−0.5
0
0.5
−1
−1
1
(a) nuova configurazione
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
(b) vecchia configurazione
a rk per ogni k, tale configurazione risulterà uguale alla vecchia.
Agendo in questo modo abbiamo visto che abbiamo disposto tutti i nodi in
n+1 cerchi. A questo punto ottimizziamo tramite ga e patternsearch identificando come incognite i raggi degli n + 1 cerchi. Utilizzando come dato
iniziale raggi tali da avere la configurazione trovata nella sezione 5.4, siamo
certi di non peggiorare il risultato. Proponiamo ora i risultati trovati con la
Tabella 7 e dei grafici circa tali nuove configurazioni.
27
Grado
CYIB-opt
CYIB-opt2
Grado
CYIB-opt
CYIB-opt2
6
4.26
4.19
13
8.73
8.72
7
4.76
4.75
14
9.63
9.62
8
9
10
11
12
5.32 5.90 6.50 7.20 7.93
5.28 5.87 6.49 7.18 7.90
15
16
17
18
19
10.65 11.82 13.13 14.63 16.415
10.62 11.76 13.08 14.60 16.29
20
18.45
18.14
Tabella 7: Confronto tra le costanti di Lebesgue trovate in questa sezione
(indicate con CYIB-opt2) con quelle trovate nella sezione 5.4 (indicate con
CYIB-opt).
La Tabella 7 mostra che con questa tecnica abbiamo ottenuto piccoli
miglioramenti, seppur ancora modesti. D’altra parte indica che i punti CYIBopt non sono ottimali (cosa nota perchè si sa teoricamente che la distribuzione
di nodi sul cerchio di CYIB non e’ ottimale).
28
A
Alcuni dati
Riportiamo ora i raggi e gli angoli trovati nella sezione 5.4: da questi facilmente si possono recuperare i singoli punti.
n = 1, Costante di Lebesgue: 1.67
raggi
angoli
1.0000000000000000 -0.5360658176023683
n = 2, Costante di Lebesgue: 1.99
raggi
angoli
0.0501412131798916 0.5153562929508685
1.0000000000000000 -0.5360653836472800
n = 3, Costante di Lebesgue: 2.47
raggi
angoli
0.4679820687982619 0.6121850120941608
0.9922533482313156 0.7619954732948395
n = 4,Costante di Lebesgue: 2.97
raggi
angoli
0.0597749650478364 0.8496021924106213
0.6673011466621492 0.0720945171727454
0.9741323143243790 0.0029377280900289
n = 5, Costante
raggi
0.3331279963027359
0.7482138764188286
0.9935782036455215
di Lebesgue: 3.49
angoli
0.8346023697260052
0.6703890566245899
0.6279469971218775
n = 6, Costante di Lebesgue: 4.26
raggi
angoli
0.0204461514949799 -0.1565667484475872
0.4902358284444396 0.8250282120957410
0.7865588559125651 0.7685327244649982
0.9992146641016007 0.7473053362691920
29
n = 7, Costante
raggi
0.2701259148120880
0.5864102960109711
0.8258213682651520
0.9996177076578140
di Lebesgue: 4.76
angoli
0.8325245107173920
0.9354058859586716
0.3292158101320267
0.4618112205743790
n = 8, Costante
raggi
0.0073638911008835
0.3783044869422912
0.6390220703125000
0.8572000000000000
1.0000000000000000
di Lebesgue: 5.32
angoli
2.6760407668590545
0.3751779296875000
0.8143196695327759
0.5116545382499695
1.0861805424690247
n = 9, Costante di Lebesgue: 5.90
raggi
angoli
0.2281401437282562 0.0219051558017731
0.4770650120735169 -0.0020005364418030
0.6841000000000000 0.0131000000000000
0.8769034719705582 0.0170064671039581
0.9966717937946320 0.0147901950359344
n = 10, Costante
raggi
0.0084579621315002
0.3192393871545792
0.5371251961708069
0.7296000000000000
0.8971426769256592
1.0000000000000000
di Lebesgue: 6.50
angoli
0.1506734061717987
0.0009898641586304
0.0163923590898514
0.0101779296875000
0.0086548826694489
0.0087738237380981
n = 11, Costante
raggi
0.1618626478672028
0.4029310242176056
0.5862985115766526
0.7637140666961670
0.9113000000000000
0.9999000000000000
di Lebesgue:7.20
angoli
0.0922528561115265
0.0203948492765427
0.0087529587268829
0.0134395029783249
0.0102000000000000
0.0077000000000000
30
n = 12, Costante
raggi
0.0134378658771515
0.2585437647104263
0.4687437332153320
0.6298000000000000
0.7917879151582717
0.9231000000000000
0.9999999850988388
di Lebesgue:7.93
angoli
-0.8066954908370971
-0.0033923553586006
0.0158562098979950
0.0109114589929581
0.0089289431333542
0.0116005364418030
0.0132779296875000
n = 13, Costante
raggi
0.1532199110031128
0.3487236098766327
0.5153000000000000
0.6699001473188401
0.8147649077653885
0.9337370276927948
0.9999879896640778
di Lebesgue:8.73
angoli
0.0075092447996140
0.0046431737422943
0.0152833520174026
0.0102781714916229
0.0087838654279709
0.0090777542591095
0.0086549107789993
n = 14, Costante
raggi
0.0146180314064026
0.2272806511878967
0.4164489120483398
0.5565876286506652
0.7038138844966888
0.8342079223394394
0.9423193498373031
1.0000000000000000
di Lebesgue:9.64
angoli
-0.0339168361663818
1.0319699355125427
1.0177344057559967
1.0087047964811324
1.0077924769401549
1.0093376274585724
1.0104341155290604
1.0113154924631118
n = 15, Costante
raggi
0.1190022724151611
0.2997729266166687
0.4583072734594345
0.5963000000000001
0.7292202208757400
0.8518155436038971
0.9487023692846298
1.0000000000000000
di Lebesgue:10.65
angoli
0.0035097047209740
0.0093276866912842
0.0093807195901871
0.0159242011785507
0.0125567138195038
0.0063822097063065
0.0020596561193466
0.0012639452934265
31
n = 16, Costante
raggi
0.0116734451293945
0.2038372586488724
0.3634565512657166
0.5043260319948196
0.6289943351984024
0.7551768913507462
0.8672801625013351
0.9541399666070938
0.9999985545873642
di Lebesgue:11.82
angoli
0.8913270408630372
0.0493280541419983
0.0184412667274475
0.0104779296875000
0.0096051114320755
0.0083206035614014
0.0069510415554047
0.0062580931901932
0.0061262216329575
n = 17, Costante
raggi
0.1112140186071396
0.2738825385570526
0.4095260025262832
0.5393581856489181
0.6573200420618057
0.7735519586563110
0.8769343918800354
0.9565776648521424
0.9971023841857910
di Lebesgue:13.13
angoli
0.0072829410390437
0.0013713313152313
0.0015158725507736
0.0010482209087372
0.0007965859474182
0.0003916458013535
0.0000829594209790
0.0001873411238194
0.0007979187633514
n = 18, Costante
raggi
0.0117608038187027
0.1806577165842056
0.3392438639402390
0.4541558593750000
0.5753969168186188
0.6845059669017792
0.7958881119251251
0.8913935227394104
0.9635165497779846
0.9999994784593582
di Lebesgue:14.63
angoli
-0.2516008030176163
-0.0020822134315968
0.0032626153469086
0.0045464333534241
0.0063139569520950
0.0042043236970901
0.0034288144350052
0.0031170035719872
0.0021234432458878
0.0000690479159355
n = 19, Costante di Lebesgue:16.46
raggi
angoli
0.0975661797761917 -0.2516008030176163
0.2375609057903290 -0.0020822134315968
0.3763999305725098 0.0032626153469086
0.4949106096267700 320.0045464333534241
0.6023279809951783 0.0063139569520950
0.7096699409723282 0.0042043236970901
0.8109961853027344 0.0034288144350052
0.9020362064361572 0.0031170035719872
0.9678093081474304 0.0021234432458878
1.0000000000000000 0.0000690479159355
n = 20, Costante
raggi
0.0186744861125946
0.1560149214744568
0.2999794526576996
0.4247275044918060
0.5255104277610779
0.6320530430555343
0.7298337890625000
0.8272896484375000
0.9113364103078843
0.9716422878026962
0.9999992996454239
di Lebesgue:18.45
angoli
-0.0749280889987946
0.0040022382020950
0.0005867928266525
0.0001686215400696
0.0001198649406433
0.0000456720590591
0.0000000000000000
0.0000312328338623
0.0000000000000000
0.0001283288002014
0.0005152076482773
33
B
Codici Matlab
Forniamo in questa sezione alcuni dei codici utilizzati in questo lavoro.
1
3
5
7
9
% _________________________________
%| ________________________________
%
%demo optimization
%| ______________________________
%| ______________________________
clear all;
degv =[15];
% deg: WAM DEGREE .
extraction_method =1; % extraction_method : 1: QR 2:LU.
11
13
15
family_type =2; % 1: Fekete
% 2: Costante Lebesgue
starting_point =0; % 0: punti di Lebsegue di Briani
% 1: punti di Fekete di Briani
17
mildness_vector =8;
19
21
ottimizzazione =0; %
%
1: CYIBopt .
2: CYIBopt2 .
23
do_plots =0;
25
27
% ----------------------------------------------------------%
...... HERE THE MAIN PROGRAM BEGINS ......
% -----------------------------------------------------------
29
31
s='set_disk_leb '; % PUT THE NAME OF YOUR FUNCTION HERE
diaryname =cat (2,'diary_ ',date ,'_',s,'.m');
33
diary on; diary ( diaryname );
35
37
fprintf ('\n \t ');
uu=cat (2,'function pts=',s,'(deg)');
fprintf (uu );
39
for kk =1: length (degv)
34
41
deg=degv(kk );
43
45
% -------------% INITIAL SET.
% --------------
47
49
switch starting_point
case 0
pts_start = set_disk_leb (deg );
case 1
pts_wam = disk_wam (deg );
V_wam = koornwinder_typeII (deg ,pts_wam , -0.5);
[pts_start ,w_disk ,ind ,C,P]= computing_fekete_points (...
pts_wam ,V_wam ,2 ,[] , extraction_method );
end
51
53
55
57
59
% --------------% OPTIMIZATION .
% ---------------
61
63
81
pts_in = pts_start ;
cputiming1 = cputime ;
for ii =1: length ( mildness_vector )
mildness = mildness_vector (ii );
if ottimizzazione ==0
pts_out = pts_in ;
value = stima (pts_out ,mildness ,deg ,0);
elseif ottimizzazione == 1
[pts_out , value ]= CYIBopt (deg ,...
pts_in , family_type , mildness );
disegno (pts_out ,kk );
else
[pts_out , value ]= CYIBopt2 (deg ,...
pts_in , family_type , mildness );
end
pts_in = pts_out ;
end
cputiming2 = cputime ;
83
% -------
65
67
69
71
73
%
75
77
79
35
% STATS .
% ------timing = cputiming2 - cputiming1 ;
[lebs ,dets , conds ]= do_stats (deg ,pts_out , timing );
85
87
89
% ------% PLOTS SENZA CERCHI
% ------if do_plots == 1
degrees = linspace (0 ,2*pi ,1000); degrees =degrees ';
pts_bnd =[ cos( degrees ) sin( degrees )];
plot( pts_bnd (: ,1) , pts_bnd (: ,2),'b-' ,...
pts_out (: ,1) , pts_out (: ,2),'r+');
end
91
93
95
97
99
end
101
103
105
107
109
111
113
% _______________________________________________
% _______________________________________________
%
% CYIBopt
% _______________________________________________
% _______________________________________________
115
117
function [pts_out , value ]= CYIBopt (deg ,...
pts_in , family_type , mildness )
119
121
123
% DATA BEFORE STARTING THE PROCESS .
dim_in =size(pts_in ,1);
x_in =[ pts_in (: ,1); pts_in (: ,2)];
125
% OPTIONS .
36
127
129
131
133
135
137
139
141
143
145
147
[degree_leb ,maxfuns ,maxtol ,tolx ]= option_settings (...
deg , mildness );
switch family_type
case 2
pts_leb = disk_wam ( degree_leb );
Vleb= koornwinder_typeII (deg ,pts_leb , -0.5);
otherwise
Vleb =[];
end
% -----------------------% Creazione configurazione
% -----------------------numerocerchi =fix(deg /2)+1;
gruppi =ones( numerocerchi ,1);
nnodi (1)= deg - gruppi (1)+1;
lun=size(gruppi ,1);
nnodi = zeros (lun ,1);
for i=0: lun -1
nnodi (lun -i)= deg +1- gruppi (i+1) -2* norm( gruppi (1:i) ,1);
end
nnodi =2* nnodi +ones(lun ,1);
ragv=ones( numerocerchi ,1)/ numerocerchi ;
149
151
for kk =1: numerocerchi
ragv(kk )= kk*ragv(kk );
end
153
167
if rem(deg ,2)==0;
rcheb = expanded_chebyshev (2* numerocerchi -1);
lun= length ( rcheb );
m=(lun -1)/2+1;
ragv= rcheb (m:lun );
else
rcheb = expanded_chebyshev (2* numerocerchi );
lun= length ( rcheb );
m=lun /2+1;
ragv= rcheb (m:lun );
end
theta_out = zeros ( numerocerchi );
ragv=ragv ';
x_inv= cerchio (theta_out ,ragv ,gruppi ,nnodi );
169
% ----------------------------------
155
157
159
161
163
165
37
171
173
175
177
179
181
183
185
187
189
% OPTIMIZATION PROCESS .
% ---------------------------------A=[]; B=[]; Aeq =[]; Beq =[]; LB= zeros ( numerocerchi ,1);
UB =2* pi*ones( numerocerchi ,1);
A2=eye( numerocerchi );
for i=1: numerocerchi -1
A2(i,i+1)= -1;
end
time1 = cputime ;
options = gaoptimset ('PopulationType ','Doublevector ' ,...
'PopulationSize ' ,[20 20 20] ,...
'Generations ' ,100,'CrossoverFcn ' ,...
@crossovertwopoint ,'CrossoverFraction ' ,0.8,
'FitnessScalingFcn ' ,...
@fitscalingrank ,'SelectionFcn ',@selectionroulette ,'MutationFcn ' ,...
@mutationadaptfeasible ,'EliteCount ',2,'Display ','off ',
'StallGenLimit ' ,100 ,...
'TolFun ',maxfuns ,'TolCon ',tolx ,'InitialPopulation ',ragv ', ...
'MigrationDirection ','both ','MigrationInterval ' ,20,
'HybridFcn ',@patternsearch );
191
193
195
197
199
201
203
205
207
209
[ragv ,vout] = ga(@( ragv1 ) opt_target (theta_out ,ragv1 ,...
gruppi ,nnodi ,deg , family_type ,Vleb ) ,...
numerocerchi ,[] ,[] ,Aeq ,Beq ,LB ,UB /(2* pi),[], options );
options = gaoptimset ('PopulationType ','Doublevector ' ,...
'PopulationSize ' ,[20 20 20] ,...
'Generations ' ,100,'CrossoverFcn ' ,...
@crossovertwopoint ,'CrossoverFraction ' ,...
0.8 , 'FitnessScalingFcn ' ,...
@fitscalingrank ,'SelectionFcn ' ,...
@selectionroulette ,'MutationFcn ' ,...
@mutationadaptfeasible ,'EliteCount ',2,'Display ','off ',
'StallGenLimit ' ,100 ,...
'TolFun ',maxfuns ,'TolCon ',tolx ,'InitialPopulation ',theta_out , ...
'MigrationDirection ','both ','MigrationInterval ' ,20,
'HybridFcn ',@patternsearch );
[theta_out ,vout] = ga(@( theta_out1 ) opt_target (theta_out1 ,ragv ,...
gruppi ,nnodi ,deg , family_type ,Vleb ) ,...
numerocerchi ,A,B,Aeq ,Beq ,[] ,[] ,[] , options );
211
time2= cputime ;
38
213
215
217
219
221
fprintf ('\n\t raggi \n');
fprintf ('\t %3.16f,',ragv );
fprintf ('\n\t angoli \n');
fprintf ('\t %3.16f,',theta_out );
fprintf ('\n\t gruppi \n');
fprintf ('\t%3.0f,',gruppi );
fprintf ('\n\t nnodi \n');
fprintf ('\t%3.0f,',nnodi );
x_out = cerchio (theta_out ,ragv ,gruppi ,nnodi );
223
225
227
fprintf ('\n\n\ tCostante di Lebesgue \t%6.16f\n',vout );
pts_out = x_out ;
% ---------------------------------% SEE IF THERE ARE IMPROVEMENTS .
% ----------------------------------
229
switch family_type
231
case 1 % FEKETE .
value_out = 1000001;
233
235
case 2 % LEBESGUE .
pts_leb = disk_wam (250);
V_leb = koornwinder_typeII (deg ,pts_leb , -0.5);
237
239
V_pts_in = koornwinder_typeII (deg ,pts_in , -0.5);
value_in =norm(V_pts_in '\ V_leb ' ,1);
241
243
245
247
249
251
%
pts_out =[ x_out (1: dim_in ,1) x_out( dim_in +1: end ,1)];
V_pts_out = koornwinder_typeII (deg ,pts_out , -0.5);
value_out =norm(V_pts_out '\ V_leb ' ,1);
if abs( value_in ) < abs( value_out )
x_out =x_in; value = value_in ;
fprintf ('fail\n\n\n\n')
else
value = value_out ;
end
253
255
otherwise
value_in = opt_target (x_in ,deg , family_type ,Vleb );
39
value_out = opt_target (x_out ,deg , family_type ,Vleb );
if abs( value_in ) < abs( value_out )
x_out =x_in;
value = value_in ;
else
value = value_out ;
end
257
259
261
263
end
265
267
269
271
273
% -------------------------------------------------------------------------% ADDITIONAL ROUTINES .
% --------------------------------------------------------------------------
275
277
279
281
283
285
287
289
291
293
295
297
function [lebdeg ,maxfuns ,maxtol ,tolx ]= option_settings (...
deg , mildness )
switch mildness
case 0
if deg < 7
lebdeg =70;
else
if deg < 12
lebdeg =50;
else
lebdeg =30;
end
end
maxfuns =50; maxtol =10ˆ( -12); tolx= maxtol ;
case 1
if deg < 7
lebdeg =80;
else
if deg < 12
lebdeg =60;
else
40
lebdeg =40;
299
end
301
303
305
307
309
311
313
315
317
319
321
323
325
327
329
331
333
335
end
maxfuns =50; maxtol =10ˆ( -12); tolx= maxtol ;
case 2
if deg < 7
lebdeg =100;
else
if deg < 12
lebdeg =70;
else
lebdeg =50;
end
end
maxfuns =50; maxtol =10ˆ( -12); tolx= maxtol ;
case 3
if deg < 7
lebdeg =135;
else
if deg < 12
lebdeg =85;
else
lebdeg =60;
end
end
maxfuns =50; maxtol =10ˆ( -12); tolx= maxtol ;
case 4
if deg < 7
lebdeg =170;
else
if deg < 12
lebdeg =120;
else
lebdeg =80;
end
end
maxfuns =50; maxtol =10ˆ( -14); tolx= maxtol ;
337
case 5
339
341
if deg < 7
lebdeg =250;
41
else
if deg < 12
lebdeg =150;
else
lebdeg =100;
end
343
345
347
349
end
maxfuns =25; maxtol =10ˆ( -14);
tolx =10ˆ( -60);
361
case 6
if deg < 7
lebdeg =270;
else
if deg < 12
lebdeg =170;
else
lebdeg =120;
end
end
maxfuns =25; maxtol =10ˆ( -14); tolx= maxtol ;
363
case 7
351
353
355
357
359
365
367
369
371
373
if deg < 7
lebdeg =300;
else
if deg < 12
lebdeg =200;
else
lebdeg =140;
end
end
maxfuns =25; maxtol =10ˆ( -14);
375
case 8
377
379
381
383
if deg < 7
lebdeg =325;
else
if deg < 12
lebdeg =250;
else
lebdeg =170;
42
tolx =10ˆ( -60);
end
end
maxfuns =25; maxtol =10ˆ( -14);
385
387
tolx =10ˆ( -60);
otherwise
389
if deg < 7
lebdeg =350;
else
if deg < 12
lebdeg =250;
else
lebdeg =170;
end
end
maxfuns =50; maxtol =10ˆ( -400);
391
393
395
397
399
tolx =10ˆ( -60);
401
end
403
405
407
function value = opt_target (theta ,r,gruppi ,numeronodi ,deg , family_type ,Vleb)
409
411
413
% --------------------------------------------% REASSEMBLING OPTIMIZATION VECTOR INTO N x 2
% MATRIX .
% --------------------------------------------
415
417
pts= cerchio (theta ,r,gruppi , numeronodi );
X=pts (: ,1);
Y=pts (: ,2);
419
421
% --------------------------------------------% OPTIMIZATION TARGET FUNCTION ..
% ---------------------------------------------
423
s = (X.ˆ2 + Y.ˆ2 - 1 > eps ); sum_s =sum(s);
425
if sum_s > 0
427
43
% fprintf ('\n \t %% WARNING : ITERATION OUT OF DOMAIN .');
429
switch family_type
431
case -2
value =10ˆ30; return ;
433
case -1
value =10ˆ30; return ;
435
437
case 0
value =10ˆ30; return ;
439
case 1 % VANDERMONDE DETERMINANT : FEKETE POINTS .
value =10ˆ( -30); return ;
441
443
case 2 % APPROXIMATE LEBESGUE CONSTANT : APPROXIMATE LEBESGUE POINTS .
value =10ˆ30; return ;
445
end
447
end
449
V = koornwinder_typeII (deg ,pts , -0.5);
451
switch family_type
453
455
case -2
s=- family_type ;
value = riesz_target (pts ,s);
457
459
case -1
s=- family_type ;
value = riesz_target (pts ,s);
461
463
case 0
s= family_type ;
value = riesz_target (pts ,s);
465
467
469
case 1 % VANDERMONDE DETERMINANT : FEKETE POINTS .
detV=det(V);
value =-abs(detV );
% fprintf ('\n \t %% %2.20e',value );
44
case 2 % APPROXIMATE LEBESGUE CONSTANT : APPROXIMATE LEBESGUE POINTS .
value =norm(V '\ Vleb ' ,1);
471
473
end
45
Riferimenti bibliografici
[1] L. Bos, S. De Marchi, A Sommariva e M.Vianello, Computing multivariate Fekete and Leja points by numerical linear algebra, SIAM J.
Numer. Anal., 48 (2010), 1984-1999.
[2] J.P. Boyd, A numerical comparison of seven grids for polynomial interpolation on the interval, Comput. Math. Appl., 38 (1999), 35-50.
[3] M. Briani, A. Sommariva, M. Vianello: Computing Lebesgue and Fekete
points in Matlab, J. Comput. Appl. Math. 236 (2012), 2477-2486.
[4] A. Cuyt, I. Yaman, B.A. Ibrahimoglu e B. Benouahmane, Radial orthogonality and Lebesgue constants on the disk, Numer. Algo., 61 (2012),
291-313.
[5] C. De Boor, A Practical Guide to Splines, Springer-Verlag, 1978.
[6] Mathworks, ga routine,
http://www.mathworks.it/it/help/gads/ga.html.
[7] Mathworks, patternsearch routine,
http://www.mathworks.it/it/help/gads/patternsearch.html.
[8] L. Mezzalira: Calcolo di punti quasi ottimali per l’interpolazione
sull’intervallo,il quadrato e il disco, Tesi di Laurea (2011), Dipartimento
di Matematica, Università di Padova.
[9] B. Sundermann: On projection constants of polynomial space on the
unit ball in several variables, Math. Z.,188 (1984), 111-117.
[10] Y. Xu, Polynomial interpolation on the unit sphere and on the unit ball,
Adv. in Comp. Math., 20 (2004), 247-260.
46