BIFURC: UN SOFTWARE

PER LA SOLUZIONE NUMERICA DI

PROBLEMI DI BIFORCAZIONE

P. Amodio, B. Carpentieri, F. Iavernaro

 

Sommario

In questo lavoro viene descritto un pacchetto Matlab per la soluzione di problemi di biforcazione statica, in particolare di equazioni non lineari dipendenti da un parametro e definite in uno spazio di dimensione finita. Tale pacchetto è scritto utilizzando le subroutine del GUI (Graphical User Interface) del Matlab e quindi il suo utilizzo risulta essere molto intuitivo. Dispone di una sezione dove vengono descritti tutti i tipi di punti che si incontrano nella biforcazione ed un’altra sezione dove vengono presentati vari esempi. La parte più interessante prevede, sempre mediante l’utilizzo di opportune finestre, l’inserimento di nuovi problemi; in questo caso il pacchetto riproduce in un grafico il diagramma di biforcazione segnalando e classificando tutti i punti limite e di biforcazione. L’utente ha poi la possibilità di modificare i parametri utilizzati dal metodo numerico nonchè le funzioni su cui è basata la rappresentazione grafica.

 

1. INTRODUZIONE.

La teoria della biforcazione, nata come disciplina matematica autonoma negli anni ‘70 nell’ambito delle cosiddette teorie non lineari, svolge oggi un ruolo fondamentale nella definizione del nuovo paradigma della scienza, ovvero lo studio completo dei modelli matematici complessi delle scienze e dell’ingegneria. Dietro questo paradigma, la teoria della biforcazione ha consentito la spiegazione di molti ‘paradossi’ ed ha imposto un altro significato al concetto di soluzione di un problema e di una equazione, obbligando scienziati, ingegneri, sperimentalisti a definire con precisione il modello ed a risolverlo in modo globale[3].

Oggetto di studio di questa teoria è la dipendenza delle soluzioni di equazioni parametriche, dai valori del parametro. Nel caso a dimensione finita ed a parametro singolo, tali equazioni sono in generale sistemi non lineari della forma:

(1.1) G(u,l ) = 0 , G:RnxR® Rn , G di classe C1.

In queste ipotesi, l’insieme soluzione o grafico della (1.1) S={ (u,l )Î Rn´ R | G(u,l )=0 } risulta formato da una o più componenti connesse di Rn+1 . La rappresentazione grafica di S, detta diagramma di biforcazione, è possibile solo nei casi n=1 ed n=2; negli altri casi esso viene ottenuto rappresentando nel piano i valori di opportune funzioni di l e di u, diventa quindi soltanto qualitativo, e non ha più una corrispondenza biunivoca con S, pur se consente ancora di ricavare alcune importanti proprietà (dimensione, connessione, differenziabilità) dell’insieme soluzione.

Da un punto di vista geometrico il diagramma di biforcazione è costituito, al pari di S, da parti connesse, dette rami soluzione, i cui punti si dicono regolari. Attraverso ciascun punto regolare passa un singolo ramo soluzione. Due o più rami si incontrano in punti detti punti di biforcazione, che sono punti singolari per l'equazione che definisce il problema.

In questo lavoro viene presentato (§ 4) un pacchetto Matlab in grado di determinare il diagramma di biforcazione completo di una generica equazione non lineare nella forma (1.1), nonchè di individuare la posizione ed il tipo di tutti i punti di interesse nel grafico, cioè i punti in cui la funzione G è singolare. Precedentemente viene definita una classificazione dei punti appartenenti all’insieme soluzione (§ 2) e vengono introdotti i principali metodi numerici utilizzati nell’affrontare questo problema (§ 3). L’ultimo paragrafo è infine dedicato a numerosi esempi numerici. Di questi, gli ultimi due riguardano il grafico di una curva algebrica e della regione di assoluta stabilità di alcuni noti metodi numerici per equazioni differenziali.

 

2. CLASSIFICAZIONE DEI PUNTI APPARTENENTI ALL’INSIEME SOLUZIONE.

Lo strumento fondamentale per analizzare l’equazione (1.1) è il seguente teorema della funzione implicita :

TEOREMA DELLA FUNZIONE IMPLICITA

Siano G:Rn ´ R ® Rn una funzione di classe C1 in Rn+1 ed (u0,l 0)Î Rn´ R tali che:

a) G(u0,l 0)=0

b) Gu (u0,l 0) è non singolare con inversa limitata, ovvero esiste una costante M0 tale che .

 

Allora esistono V intorno di l 0 in R, W intorno di u0 in Rn ed u:V® W di classe C1 tali che:

i) u(l 0)=u0

ii) " l Î V : G(u(l ),l )=0.

Per poter definire da un punto di vista geometrico l‘insieme soluzione, è necessario dapprima effettuare una classificazione completa dei diversi tipi di punti di cui è costituito. A tal fine è conveniente introdurre la seguente definzione

DEFINIZIONE 2.1. Si definisce cammino della (1.1) ogni insieme del tipo

 

G = { (u(s),l (s)) | sÎ IÌ R Ù G(u(s),l (s))=0} .

Sia allora s=s0 tale che G(u(s0),l (s0))=0, e denotiamo con =Gu(u(s0),l (s0)) lo Jacobiano di G rispetto ad u nel punto s0, e con =Gl (u(s0),l (s0)) l’analogo differenziale rispetto a l . Sussiste allora la seguente

DEFINIZIONE 2.2. Un punto s=s0 si dice punto regolare o isolato per la (1.1) se la matrice è non singolare.

Applicando il teorema sulla funzione implicita, si ha che un punto regolare appartiene ad un singolo ramo soluzione; inoltre, differenziando una volta rispetto ad s, si ottiene la relazione

(2.1 ) Gu (s)+ Gl (s)=0.

 

Fig. 2.1. Esempio di punto regolare.

 

Calcolando la (2.1) in s=s0 , segue (s0)¹ 0, cioè la tangente al grafico di G nel punto (u0,l 0) non può avere direzione verticale all’asse l . Queste due proprietà sono evidenziate in figura 2.1.

DEFINIZIONE 2.3. Un punto s=s0 si dice punto singolare o critico per la (1.1) se la matrice è singolare . In tal caso dim Ker() ³ 1.

DEFINIZIONE 2.4. Un punto singolare s=s0 si dice semplice se dim Ker()=1.

I punti singolari semplici sono di due tipi: punti limite semplici e punti di biforcazione semplici.

DEFINIZIONE 2.5. Un punto singolare semplice s=s0 si dice punto limite semplice se Ï R().

DEFINIZIONE 2.6. Un punto singolare semplice s=s0 si dice punto di biforcazione semplice se Î R() .

Dalla definizione e dalla relazione (2.1) si ha che in un punto limite semplice deve essere (s0)=0, cioè la tangente al ramo nel diagramma ha posizione verticale.

DEFINIZIONE 2.7. Un punto limite semplice s=s0 si dice non degenere (oppure normale, quadratico) se ¹ 0 (fig. 2.2 e 2.3).

DEFINIZIONE 2.8. Un punto limite semplice s=s0 si dice degenere se =0 .

 

Per i punti limite degeneri si possono ricavare ulteriori caratterizzazioni aumentando l'ordine di contatto con la retta l =l 0. Nel caso (s0)¹ 0 il punto limite si definisce cuspidale (fig. 2.4). Nel caso generale sussiste la seguente

DEFINIZIONE 2.9. Un punto s=s0 si dice punto limite semplice degenere di ordine m (fig. 2.5) se :

1) l (k) (s0)=0 per ogni k=1,...,m-1

2) l (m) (s0)¹ 0.

Nel caso di punti di biforcazione semplici, in un loro intorno l’insieme soluzione della (1.1) è formato da quattro rami, a due a due l’uno la continuazione dell’altro, che s’incontrano in s=s0.

Dalla definizione di punto di biforcazione semplice, sono ben definiti due vettori f e f 0 di Rn verificanti :

a) Ker() = span{ f }

b) f 0 = .

 

Posto , dalla (2.1) per s=s0 segue che . Calcolando ora in s=s0 la derivata di (2.1) rispetto ad s, si ricava

 

(2.2) .

 

Premoltiplicando la (2.2) per y T Î Rn definito in modo tale che Ker(()T) = span{ y } , e sostituituendo le espressioni precedenti in luogo di e , si ricava

 

(2.3) Aa 2 + 2 B a b + C b 2 = 0 ,

 

dove A,B,C sono costanti che coinvolgono le derivate seconde di G rispetto ad s calcolate in s=s0. La (2.3) rappresenta un'equazione algebrica di 2° grado nelle incognite a e b . Se D = B2 – 4 AC >0, essa ammette due radici reali, ciascuna delle quali genera una curva soluzione regolare (u(s),l (s)), e quindi dal punto (u0,l 0) emerge più di un ramo. L’equazione (2.3) consente anche di fornire una classificazione dei diversi tipi di punti di biforcazione in relazione al valore assunto dai coefficienti A,B,C.

DEFINIZIONE 2.10. Un punto di biforcazione semplice s=s0 si dice punto di biforcazione transcritico (fig. 2.6) se D > 0 , A ¹ 0 .

DEFINIZIONE 2.11. Un punto di biforcazione semplice s=s0 si dice punto di biforcazione a forca (fig. 2.7) se A = 0 , B ¹ 0.

 

 

DEFINIZIONE 2.12. Un punto di biforcazione semplice s=s0 si dice punto di emergenza di una formazione isolata (o ad isola) (fig. 2.8) se D < 0 .

Come si evidenzia dalle figure, in un punto di biforcazione transcritico si intersecano due rami di curva distinti, nessuno dei quali ha tangente verticale, mentre in un punto di biforcazione a forca uno dei due rami ha sicuramente tangente verticale al cammino nel piano (u,l ). Infine nella Definizione 2.12 la condizione D <0, che non si verifica se sono soddisfatte le condizioni di regolarità di G, implica per la (2.3) l'esistenza di due soluzioni complesse coniugate. Nel diagramma questo comporta una degenerazione dei due continui che passano per s=s0 in un singolo punto. Ne consegue una formazione ad isola che suggerisce la denominazione per il relativo punto di biforcazione . Come nel caso dei punti limite, si possono introdurre ulteriori definizioni di punti di biforcazione semplici, aumentando l’ordine di contatto di uno dei rami con l’asse l (fig. 2.9 e 2.10).

 

3. BIFORCAZIONE NUMERICA .

Il trattamento numerico dei problemi di biforcazione, in breve indicato come biforcazione numerica, coinvolge complessi problemi aggiuntivi di analisi numerica tra cui:

Il metodo standard per la determinazione numerica di un ramo di soluzioni consiste nella parametrizzazione del ramo rispetto a l . La procedura per ottenere l’intero ramo, quindi la dipendenza della soluzione u da l , è detta tecnica di continuazione locale. Fondamentalmente tale tecnica è di tipo predittore-correttore. Supponendo di conoscere una soluzione (u0,l 0) della (1.1), l’idea della continuazione locale è di fissare un passo d l >0 e cercare una soluzione in l =l 0+d l , procedendo così fino a quando si ricava l’intero ramo.

Il calcolo di u(l ) si effettua in due fasi distinte. In una prima fase, a partire da (u0,l 0), si ricava una approssimazione u0(l ) mediante un metodo predittore. Successivamente si utilizza uno schema iterativo (correttore) che sotto opportune ipotesi converge alla soluzione.

Il predittore più frequentemente usato è quello tangente (o di Eulero), in cui si assume u0(l ) uguale al punto di ascissa l della tangente alla curva nell’ultima soluzione calcolata, cioè u0(l ) = u0+(l -l 0) .

Il metodo correttore consiste in uno schema iterativo della forma

An (un+1 (l ) – un (l ) ) = – G(un (l ) ,l ) , n = 0,1,2,...,

dove le An sono opportune matrici che assicurano la convergenza della successione un(l ) allo zero locale. Nel metodo di Newton, la matrice An ad ogni passo coincide con lo Jacobiano di G rispetto ad u calcolato nell'approssimazione relativa un(l ). Questo metodo, sotto ipotesi di regolarità di G, fornisce convergenza quadratica, ma presenta lo svantaggio di richiedere un costo computazionale elevato, essendo necessario fattorizzare una nuova matrice ad ogni passo dell’algoritmo. Per questo motivo è più usato il metodo di Newton modificato nel quale An=A è indipendente da n ed è posto uguale allo jacobiano di G nel punto iniziale u0(l ).

Le procedure di continuazione possono fallire in presenza di punti singolari sulla curva. Ciò dipende essenzialmente dal tipo di parametrizzazione utilizzato. Pertanto in questi casi è necessario adottare qualche altra parametrizzazione che consenta di definire una curva non esprimibile tramite una funzione u=u(l ). Questo si realizza, ad esempio, integrando la (1.1) con la seguente normalizzazione, detta a pseudolunghezza d’arco [5]

 

(3.1) N(u,l ,D s) º = 0 ,

 

che rappresenta l’equazione di un piano ortogonale alla tangente () a distanza D s da (u0,l 0). Se D s non è troppo grande, questo piano intersecherà la curva G . La nuova soluzione (u(s),l (s)) può essere ottenuta risolvendo il sistema delle due equazioni (1.1) e (3.1)

Poichè tale sistema è in generale non lineare, esso va linearizzato con il metodo di Newton; si ha allora :

dove =Gu(un,l n) , =Gl (un,l n) , e le iterate sono definite da:

 

un+1 = un+D un , l n+1 = l n+D l n .

 

La matrice dei coefficienti del sistema di ordine (N+1) è non singolare anche nel caso in cui sia singolare, e quindi il metodo di Newton può essere applicato.

Nel caso dei punti di biforcazione, tuttavia, è necessaria qualche altra tecnica opportuna per derivare il nuovo ramo emergente.

Ciò può essere effettuato calcolando le due radici distinte dell'equazione (2.3) ed utilizzandole nelle espressioni del vettore tangente. Si può allora usare il metodo di continuazione a pseudolunghezza d'archi per calcolare i differenti rami di soluzioni. Se uno dei rami è già noto, si conosce una tangente ( alla curva in (u0,l 0) e quindi una radice della (2.3). L'altra radice è facilmente calcolabile a partire dai valori dei coefficienti A, B e C dell'equazione e quindi delle derivate , e . Queste quantità possono anche essere approssimate con le formule :

 

A @ y T ( Gu(u0 + e f , l 0) – Gu (u0,l 0) ) f = A + O(e )

 

B @ y T ( ( Gu(u0 + e f 0 , l 0) – Gu (u0,l 0) ) f + ( Gl (u0 + e f , l 0) –

– Gl (u0,l 0) )} = B + O(e )

 

C @ y T ( ( Gu(u0 + e f 0 , l 0) – Gu (u0,l 0) ) f 0 + 2 ( Gl (u0 + e f 0 , l 0) –

– Gl (u0,l 0) ) + ( Gl (u0 , l 0 + e ) – Gl (u0,l 0) ) = C +O(e ) ,

 

dove f , y , e f 0 sono soluzioni non banali di:

 

f = 0 , ()T y = 0 , f 0 = – , y T f 0=0

 

e si calcolano effettuando una fattorizzazione LU con pivot parziale della matrice .

 

4. IL PACCHETTO MATLAB BIFURC.

BIFURC è un pacchetto software realizzato in MATLAB 5, che consente di analizzare e risolvere problemi di biforcazione legati alla soluzione dell’equazione (1.1). Esso è stato sviluppato utilizzando le librerie grafiche del MATLAB di modo che il suo uso risulta semplice anche da parte di utenti meno esperti. Tutte le operazioni possono essere effettuate cliccando col mouse su opportuni "pushbutton", "popupmenù", "radiobutton", "checkbutton", etc., oppure mediante le voci specifiche dei menù posti in alto nella finestra. Il pacchetto BIFURC è costituito da tre sezioni principali:

 

Definizione di un nuovo problema.

Scegliendo la voce "Nuova" dal menù "File", si accede ad una finestra di edit per l’inserimento di una nuova funzione. Si possono definire sistemi non lineari dipendenti da un parametro secondo la sintassi MATLAB, attraverso una function esterna che accetta come argomento un vettore la cui ultima componente rappresenta il parametro, mentre le restanti sono le incognite del problema. La funzione deve restituire in output il vettore ottenuto calcolando il sistema nell’argomento passato. In questo ambito il pulsante "Esempio" mostra un esempio di riferimento della sintassi da utilizzare nella definizione di ogni nuova equazione.

E’ possibile aprire delle funzioni già definite, attraverso il pulsante "Apri". Il popupmenù posto in alto a destra nella finestra contiene l’elenco dei files presenti in memoria. Per accedere ad uno di essi, è sufficiente scegliere il suo nome tra le voci disponibili. Ciò consente di copiare delle parti di interesse di un file in un altro, semplicemente selezionandole col puntatore del mouse (cliccando col pulsante destro nel punto iniziale e trascinando il puntatore mantenendo il pulsante premuto), copiandole in memoria (premendo il pulsante destro del mouse e scegliendo la voce "Copy" del menù popup che compare a video), ed infine inserendole nel nuovo file nel punto scelto (premendo nuovamente il pulsante destro del muose e scegliendo la voce "Paste"). Se il file viene modificato, accanto al suo nome compare un asterisco, che scompare dopo che le modifiche vengono registrate tramite il pulsante "Salva".

Completata la definizione, è necessario specificare una soluzione iniziale nota del sistema per far partire l’algoritmo; essa va inserita sotto forma di vettore nell’apposito campo.

Per rendere attivo il problema, bisogna assegnargli un nome, salvandolo in un opportuno file. A questo scopo è sufficiente premere sul pulsante "Salva come". Il salvataggio avviene in una sottodirectory predefinita, denominata "Esempi", tuttavia è possibile memorizzare il file in una qualunque altra directory. Con l’operazione di salvataggio, ad ogni nuovo problema rimangono associati dei valori di default per i parametri, che possono essere modificati, tramite l’opzione "Parametri" della finestra principale.

Il pulsante "Stampa", inizialmente non attivo, diventa accessibile dopo il salvataggio, e permette di stampare l’espressione della funzione corrente.

Il pulsante "Chiudi" consente di chiudere il file attivo. Nel caso in cui eventuali modifiche apportate non siano state salvate, compare un messaggio che richiede all’utente se completare ugualmente l’operazione.

Il pulsante "Chiudi tutto" chiude contemporaneamente tutti i problemi attivi e consente di tornare alla schermata precedente. Se esistono files modificati ma non salvati, compare un messaggio di avvertimento per l’utente.

 

Apertura di un problema già definito.

Scegliendo la voce "Apri" dal menù "File", compare una finestra in cui è possibile scegliere il file di definizione di un problema immesso durante una precedente sessione di lavoro. Nella finestra compare l’elenco dei files accessibili nella sottodirectory "Esempi", anche se è comunque possibile aprire un file memorizzato in qualunque altra directory. La funzione scelta viene caricata in memoria insieme al suo grafico ed ai valori dei suoi parametri. A questo punto è possibile risolvere il problema (ridisegnare la curva soluzione in base a nuovi valori, o visualizzare un output numerico dei risultati) oppure procedere alle altre operazioni (modifica della function e del punto iniziale, gestione dei parametri, stampa del grafico, etc.).

Si possono aprire più problemi durante una stessa sessione di lavoro. Nel menù "Finestra" compare l’elenco dei problemi aperti, ed un segno di spunta indica quello attivo. Per passare da uno all’altro, è sufficiente scegliere la voce corrispondente tra quelle disponibili: viene visualizzato il grafico relativo al nuovo problema e vengono aggiornati automaticamente i valori dei campi di edit posti a destra della finestra.

 

Soluzione di un problema.

Dopo aver completato la definizione di una funzione o averne aperta una già definita in precedenza, si attiva la voce "Disegna" del menù "Operazioni" che consente di tracciare le curve soluzione. La procedura di tracciamento può essere interrotta in qualunque istante. I campi di edit nella parte destra della finestra riportano i valori dei principali parametri caratteristici del problema. E’ possibile intervenire su di essi, modificando i valori, ed osservarne direttamente gli effetti sul grafico ridisegnando le curve. Intervenendo sul numero massimo di iterate, ad esempio, si può limitare od estendere la parte di curva disegnata. Potendo il diagramma di biforcazione essere costituito da rami infiniti, occorre un criterio per poter individuare la parte di interesse. Ciò può essere ottenuto attraverso due criteri non mutuamente esclusivi. Inserendo un numero massimo N di passi si avrà l’arresto della procedura dopo che N approssimazioni sono state ottenute. Inserendo l’intervallo di variabilità del parametro l , la curva sarà tracciata finchè non vengono superati i limiti di tale intervallo.

Analogamente si possono modificare altri valori quali la tolleranza del metodo di Newton, il passo utilizzato nella procedura di continuazione, il punto di partenza dell’algoritmo e l’area di visualizzazione del grafico, inserendo nel campo "Assi" un vettore riga a quattro elementi, di cui i primi due rappresentano gli estremi degli assi lungo l’ascissa, e gli altri due quelli lungo l’ordinata. Infine si può specificare il nome della function che definisce i valori da riportare sui due assi. Per default sull’asse delle ascisse vengono riportati i valori del parametro, su quello delle ordinate la norma 2 del vettore soluzione. Tuttavia è possibile specificare una funzione diversa, come si vedrà nel paragrafo successivo.

Una volta trovati i valori ottimali per la rappresentazione della curva, le voci "Salva curva" e "Ripristina curva" del menù "File" consentono, rispettivamente, di memorizzarli in modo permanente o di ripristinare quelli iniziali.

La voce di menù "Risultati" visualizza un output numerico delle singolarità incontrate dall’algoritmo, mentre "Stampa", consente di stampare il grafico prodotto.

L’opzione "Attributi" permette di cambiare alcune modalità di visualizzazione della curva (stile e spessore della linea, tipo di punto, colore).

L’opzione "G-Input" permette di effettuare un input grafico, selezionando i punti di interesse della curva con il pulsante sinistro del mouse, dopodichè, premendo "Invio" sulla tastiera compare a video una finestra con le coordinate dei punti scelti.

L’opzione "Sovrapponi" consente, nel caso in cui siano aperti più problemi, di sovrapporre in un unico grafico più curve, scegliendo due o più funzioni da una finestra che compare a video. Ciascuna curva verrà riportata con i propri attributi.

Tramite "Chiudi", si può chiudere il problema attivo. Se eventuali modifiche apportate ai parametri non sono state salvate, compare un messaggio di avvertimento che chiede se completare ugualmente l’operazione.

Con "Chiudi tutto" si torna alla schermata precedente. Anche in questo caso, se ci sono problemi modificati e non salvati, compare un messaggio di avvertimento per l’utente.

 

Modifica di un problema.

Premendo sul pulsante "Modifica", compaiono due finestre di edit in cui vengono riportate la function che definisce il problema corrente, ed il punto iniziale dell’algoritmo. L’utente può entrare in ciascuno di essi, apportare delle modifiche e memorizzarle mediante il pulsante "Salva", oppure registrarle con un nome differente tramite il pulsante "Salva come".

Il pulsante "Apri" consente di richiamare un’altra funzione per nuove operazioni di modifica. Il popupmenù posto in alto a destra nella finestra contiene l’elenco dei files presenti in memoria. Per accedere ad uno di essi, è sufficiente scegliere il suo nome tra le voci disponibili. Ciò consente di copiare delle parti di interesse di un file in un altro, come è stato specificato nel paragrafo "Definizione di un nuovo problema". Col pulsante "Chiudi" si chiude il problema attivo, con "Chiudi tutto" si torna alla schermata precedente. In presenza di eventuali modifiche non registrate, compare un messaggio di avvertimento.

 

Gestione dei parametri predefiniti.

Quest’operazione può essere eseguita tramite la voce "Parametri" del menù "File" della finestra principale. Si apre allora una finestra in cui compaiono i valori di default dei parametri caratteristici associati ad ogni nuovo problema.

Essi sono:

Si può intervenire su ciascuno di questi parametri, entrando nel relativo campo e modificandone il valore. Queste modifiche non hanno alcun effetto sui problemi attivi o già salvati in precedenza, ma soltanto su quelli definiti successivamente.

Premendo su "Ripristina", si possono reimpostare i vecchi valori, mentre col pulsante "Memorizza" si rendono permanenti le variazioni apportate.

 

Definizione delle quantità da rappresentare nel diagramma.

E’ possibile rappresentare sugli assi delle ascisse e delle ordinate dei valori differenti da quelli predefiniti, scegliendo l’opzione "altro..." nel popupmenu denominato "Funzione assi" che compare nella finestra principale. Si apre allora una nuova finestra in cui è possibile editare una funzione secondo la sintassi MATLAB che accetta come argomento il vettore delle incognite e del parametro, e restituisce una coppia di valori, il cui primo elemento è il valore che sarà riportato sull’asse delle ascisse, ed il cui secondo elemento è il valore che sarà riportato sull’asse delle ordinate. Completata la definizione della funzione, è possibile salvarla attraverso il pulsante "Salva come". La memorizzazione avviene in una directory predefinita, chiamata "Norme", tuttavia è possibile registrarla in qualunque altra directory. Altre operazioni consentite sono la cancellazione definitiva di una norma mediante il pulsante "Elimina", la stampa della funzione corrente tramite il pulsante "Stampa", e l’apertura di una già salvata per effettuare eventuali modifiche mediante il pulsante "Apri". Si possono aprire più files per copiare alcune parti di uno nell’altro. Il popupmenù posto in alto a destra contiene l’elenco delle funzioni attive. Per passare da una all’altra, è sufficiente selezionarla tra le voci disponibili.

- inserire od eliminare la visualizzazione degli assi, intervenendo sul controllo denominato "Assi" posto nella parte destra della finestra.

- richiedere il tracciamento del grafico contemporaneamente alla fase di calcolo o soltanto alla sua conclusione, attraverso il controllo denominato "Traccia";

- evidenziare delle aree di interesse del grafico, premendo il pulsante "zoom on" e selezionando la regione col puntatore del mouse;

- richiedere un output numerico dei risultati, ovvero delle singolarità (coordinate e tipo) incontrate dall’algoritmo tramite il pulsante "Risultati";

- modificare i valori dei parametri dell’algoritmo, disegnare le curve soluzione in base a quelli immessi, e poi ripristinare i vecchi valori oppure memorizzare in modo permanente le variazioni apportate.

Quest’ultima operazione si gestisce mediante il pulsante "Parametri", che consente di aprire una nuova finestra in cui sono riportati i valori correnti dei parametri relativi al problema scelto. Si può entrare in ciascuno dei campi ed inserire dei nuovi valori. Premendo il pulsante "Chiudi" si torna alla finestra precedente in cui è possibile, scegliendo lo stesso problema dal popupmenu "Funzione", osservare direttamente sul grafico gli effetti delle variazioni apportate. Per ripristinare i dati predefiniti, premere il pulsante "Ripristina" della finestra dei parametri, mentre per rendere permanenti le variazioni apportate, premere "Predef.".

Tutte le operazioni di questa sezione possono essere effettuate anche mediante le voci specifiche del menù posto in alto nella finestra.

 

5. ESEMPI NUMERICI.

In questa sezione vengono presentati gli output grafici e numerici forniti dal pacchetto BIFURC applicato ad alcuni classici problemi non lineari. L’algoritmo numerico, dato un punto di partenza per la soluzione dell’equazione, permette di ricavare il diagramma di biforcazione completo mediante i seguenti tre passi principali:

  1. la generazione, mediante le tecniche di continuazione, di un arco di soluzioni (u(s),l (s)) che passi oltre i punti singolari, senza localizzarli accuratamente.
  2. il ritorno nell’intorno di ogni punto singolare per una sua più precisa localizzazione, e l’individuazione della natura della singolarità;
  3. la ricerca di eventuali altri rami che emergono da questo punto ed il loro disegno seguendo le procedure del passo a). Il passo c) si applica finché l’insieme dei rami che emergono dai punti di biforcazione è completamente determinato.

Per quanto riguarda il passo b), va tenuto presente che in un punto singolare lo Jacobiano si annulla, e quindi si può utilizzare il valore del determinante di Gu come funzione test. Non appena esso cambia di segno, la regolarità della funzione G assicura l'esistenza di un punto singolare, che potrà essere localizzato utilizzando il metodo di bisezione nell'intervallo in cui si è verificata la variazione di segno. L'operazione successiva consiste nell'individuazione del tipo di singolarità. A tale scopo basta valutare il prodotto y TGl : se esso è prossimo a zero, la soluzione sarà un punto limite, altrimenti sarà un punto di biforcazione.

Nel caso delle equazioni differenziali, è necessario effettuare dapprima la discretizzazione del problema, ovvero passare dalla formulazione continua a quella discreta. Terminata questa fase, è possibile procedere al calcolo dei rami di curve a partire dal punto iniziale noto (u0,l 0). I grafici seguenti rappresentano degli esempi numerici relativi ad alcune semplici equazioni non lineari.

Gli esempi 1, 2 e 5 sono presi dalla sezione di esempi numerici del programma e nei primi due viene anche visualizzata la finestra con i risultati numerici. Gli esempi 3 e 4 sono presi dalla sezione che tratta la soluzione di nuove equazioni. Osseviamo che nell’esempio 4 non viene segnalato alcun punto di biforcazione. Questo non è in contraddizione con la rappresentazione grafica ottenuta in quanto la funzione che realizza la corrispondenza tra un punto del diagramma di biforcazione e un punto del grafico non è ingettiva.

ESEMPIO 1:

+ + u3 +l = 0 , x Î [0,1]

(0) = 0 ; u(1) = 0 .

Questo esempio è preso dal Keller [5]. In questo caso sulle ordinate è rappresentata la quantità || u || = .

 

 

ESEMPIO 2:

+ f(u,l ,x) = 0 , x Î [0,1]

f(u,l ,x) = 2 q(l ) + p 2 p (u-q(l ) x (1-x) )

q(l )=l 2 el /2 , p(z) = z + z2 .

u(0) = u(1) = 0 .

Questo esempio è preso dal Rhabinowitz [7]. In questo caso sulle ascisse è rappresentata la quantità .

 

 

ESEMPI 3-4:

I seguenti due esempi rappresentano la regione di assoluta stabilità di un metodo Runge-Kutta a 5 passi di ordine 4 [6] e del metodo di Adams-Moulton di ordine 6 [4]. In questo caso sono riportati la parte complessa dell’ultima componente del vettore soluzione sull’asse delle ordinate, la parte reale sull’asse delle ascisse.

ESEMPIO 5:

4 x4 + 4 x2 y2 - 12 x2 y + y2

Questo esempio rappresenta una curva algebrica, nota in letteratura con il nome di curva di Kramer. In questo caso il grafico riporta y rispetto ad x.

 

 

BIBLIOGRAFIA

[1] M. CROUZEIX, J. RAPPAZ, On numerical approximation in Bifurcation Theory, Springer-Verlag , Berlin, (1990).

[2] E. J. DOEDEL , X.J. WANG , T.F. FAIRGRIEVE , AUTO94 Software for continuation and bifurcation problems in ordinary differential equations , California Institute of Technology , Pasadena CA 91125, (1995).

[3] A. GEORGESCU, I. OPREA , Bifurcation theory from the application point of view, Università di Timisoara (1994).

[4] E. HAIRER, G.WANNER, Solving Ordinary Differential Equations II, Stiff and Differential-Algebraic Problems, Springer-Verlag, Berlin Heidelberg, (1991).

[5] K. KELLER , Lectures on numerical methods in Bifurcation Problems , Springer-Verlag, Berlin (1987).

[6] J. D. LAMBERT , Numerical Methods for Ordinary Differential Systems, John Wiley & Sons, Chichester (1991).

[7] P. H. RHABINOWITZ , Application of Bifurcation Theory , Academic Press, New York, (1977).