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