• Non ci sono risultati.

Sono stati costruiti due programmi in MATLAB: casopot.m e casober.m. Come indicano i nomi, il primo implementa l’algoritmo descritto da D. Mano- cha e J. Demmel [22, 23], ossia il caso in cui tutti i polinomi vengono riportati in base di potenze, il secondo considera il nuovo algoritmo introdotto nel capitolo 5, ossia il caso in cui si lavora in base di Bernstein.

6.1.1

Caso base di potenze

Il programma casopot.m prende in input sei vettori xp, yp, wp, xq, yq e wq tali che le curve P (t) e Q(u) di nostro interesse sono definite rispettivamente dai punti di controllo generalizzati (xp(i), yp(i), wp(i)) per i = 1, . . . , n e (xq(j), yq(j), wq(j)) per j = 1, . . . , m e restituisce in output i vettori “parpotp” e “parpotq” che contengono rispettivamente i parametri dei punti di inter- sezione rispetto alla curva P (t) e alla curva Q(u), i vettori “Ppot” e “Qpot” contenenti le coordinate dei punti di intersezione calcolati rispettivamente

sulla curva P (t) e sulla curva Q(u) e la matrice “autovalore ma mg ncc” che contiene nella prima colonna gli autovalori corrispondenti ai punti di intersezione, nella seconda e nella terza rispettivamente le molteplicit`a alge- briche e geometriche di tali autovalori. Infine in output il programma resti- tuisce “ncoefpot” che rappresenta il massimo tra le norme dei coefficienti del polinomio matriciale (4.2).

Il programma `e articolato in sottoprogrammi che implementano i vari passaggi intermedi dell’algoritmo.

1. Calcolo dell’equazione implicita (4.1) della curva P (t).

2. Costruzione del polinomio matriciale definito dalla relazione (4.2). 3. Costruzione della coppia di matrici che permettono di ricondurre il

problema iniziale del calcolo dei punti di intersezione ad un problema agli autovalori generalizzato.

4. Determinazione dei cluster di autovalori.

5. Determinazione della molteplicit`a algebrica degli autovalori di interesse. 6. Calcolo dei parametri dei punti di intersezione e delle coordinate di tali

punti rispetto ad entrambe le curve.

Diamo una breve descrizione di come sono stati costruiti i sottoprogram- mi relativi ad ogni passaggio citato.

- eqimplicitapot.m

Dati in input i vettori xp, yp e wp, si ottiene in output le tre matrici “M 1”, “M 2” e “M 3”, coefficienti dell’equazione implicita di P (t). Al suo interno viene richiamato il programma rispot.m che implementa le relazioni in- trodotte dal Teorema 3.1 e permette quindi di definire la matrice Bezoutiana di due polinomi in base di potenze.

- polmatpot.m

In input vengono prese le matrici “M 1”, “M 2” e “M 3” e i vettori xq, yq e wq e restituisce la matrice “M” dei coefficienti del polinomio matriciale

Implementazione

ottenuto dopo la sostituzione dell’equazione della curva Q(u) in quella im- plicita della curva P (t), ossia, seguendo le notazioni introdotte nel capitolo 4, M= [N0, . . . , Nm]. Inoltre si ottiene in output il numero “ncoefpot” che rappresenta la massima norma di tali coefficienti.

- comppot.m

Questo programma prende in input la matrice M e restituisce le matrici “A” ed “E” ottenute implementando le relazioni determinate dal Teorema 4.4. - cluster.m

Come input prende le matrici A ed E e come output restituisce la matrice “autovalore ncc m” che nella prima colonna ha gli autovalori della coppia (A, E), nella seconda i rispettivi numeri di condizionamento e nella terza le loro molteplicit`a algebriche. Gli autovalori sono calcolati con la funzione interna di MATLAB eig.m che utilizza il metodo QZ per la risoluzione di problemi agli autovalori generalizzati. I numeri di condizonamento invece sono calcolati implementando la Definizione 2.6 introdotta nel capitolo 2. Inoltre questo programma restituisce anche il vettore “normaa normae” che ha come elementi la norma della matrice A e la norma della matrice E. - moltgeom.m

Dati in input le matrici A, E e autovalori ncc m, restituisce la matrice “eigd ma mg ncc” contenente nella prima colonna gli autovalori, nella se- conda e terza le rispettive molteplicit`a algebriche e geometriche e nell’ultima i numeri di condizionamento. La molteplicit`a geometrica `e calcolata secondo il procedimento teorico introdotto nel capitolo 4 utilizzando, per la deter- minazione dei valori singolari, la funzione interna di MATLAB svd.m. Tale funzione `e usata anche per il calcolo dell’altro output “valsing”: una matrice di ordine m che nell’i-esima colonna contiene i valori singolari della matrice (A-λE). In particolare l’i-esima sua colonna `e nulla nel caso in cui l’autoval- ore corrispondente sia un numero complesso o infinito.

- parametripot.m

Questo programma prende in input la matrice eigd ma mg ncc e i vet- tori xp, yp, wp, xq, yq e wq e restituisce i vettori “parpotp” e “parpotq” dei parametri dei punti di intersezione rispettivamente per la curva P (t) e la curva Q(u). Inoltre si ottiene anche la matrice “autovalore ma mg ncc” che nella prima colonna ha gli autovalori di nostro interesse, nella seconda e nella terza, nell’ordine, le loro molteplicit`a algebriche e geometriche e nell’ul- tima i numeri di condizionamento. Infine si ottiene anche i vettori “Ppot” e

“Qpot” dei punti di intersezione calcolati rispettivamente su P (t) e su Q(u).

6.1.2

Caso base di Bernstein

Il programma casober.m `e stato costruito in modo analogo al program- ma descritto precedentemente. In particolare prende in input i sei vettori xp, yp, wp, xq, yq e wq che definiscono le curve P (t) e Q(u) e restituisce in output i vettori “parberp” e “parberq” che contengono rispettivamente i parametri dei punti di intersezione rispetto alla curva P (t) e alla curva Q(u), i vettori “Pber” e “Qber” che contengono le coordinate dei punti di intersezione calcolati rispettivamente sulla curva P (t) e sulla curva Q(u) e la matrice “autovalore ma mg ncc” che contiene nella prima colonna gli autovalori corrispondenti ai punti di intersezione, nella seconda e nella terza rispettivamente le molteplicit`a algebriche e geometriche di tali autovalori. Infine tra gli output c’`e il numero “ncoefber” che rappresenta il massimo tra le norme dei coefficienti del polinomio matriciale (5.3).

Il programma `e articolato da sottoprogrammi che implementano i vari passaggi intermedi dell’algoritmo.

1. Calcolo dell’equazione implicita (5.1) della curva P (t).

2. Costruzione del polinomio matriciale definito dalla relazione (5.3).

3. Costruzione della coppia di matrici che permettono di ricondurre il problema iniziale del calcolo dei punti di intersezione ad un problema agli autovalori generalizzato.

4. Determinazione dei cluster di autovalori.

5. Determinazione della molteplicit`a algebrica degli autovalori di interesse.

6. Calcolo dei parametri dei punti di intersezione e delle coordinate di tali punti rispetto ad entrambe le curve.

Diamo una breve descrizione di come sono stati costruiti i sottoprogram- mi relativi ad ogni passaggio citato.

Implementazione

- eqimplicitaber.m

Dati in input i vettori xp, yp e wp, si ottiene in output le tre matrici “M 1”, “M 2” e “M 3”, coefficienti dell’equazione implicita della curva P (t). Al suo interno viene richiamato il programma risber.m che implementa le re- lazioni introdotte dal Teorema 3.4 e permette quindi di definire la matrice Bezoutiana di due polinomi in base di Bernstein.

- polmatber.m

In input vengono prese le matrici “M 1”, “M 2” e “M 3” e i vettori xq, yq e wq e restituisce la matrice “M” dei coefficienti del polinomio matriciale ottenuto dopo la sostituzione dell’equazione della curva Q(u) in quella im- plicita della curva P (t), ossia, seguendo le notazioni introdotte nel capitolo 5, M= [F0, . . . , Fm]. Inoltre si ottiene in output il numero “ncoefber” che rappresenta la massima norma di tali coefficienti.

- compber.m

Questo programma prende in input la matrice M e restituisce le matrici “A” ed “E” ottenute implementando le relazioni determinate dal teorema 5.3. - cluster.m

`

E il programma gi`a definito nel caso di base di potenze. - moltgeom.m

Anche questo programma coincide con quello gi`a descritto nel caso di base di potenze.

- parametriber.m

Questo programma prende in input la matrice eigd ma mg ncc e i vet- tori xp, yp, wp, xq, yq e wq e restituisce i vettori “parberp” e “parberq” dei parametri dei punti di intersezione rispettivamente per la curva P (t) e la curva Q(u). Inoltre si ottiene anche la matrice “autovalore ma mg ncc” che nella prima colonna ha gli autovalori di nostro interesse, nella seconda e nella terza, nell’ordine, le loro molteplicit`a algebriche e geometriche e nell’ul- tima i numeri di condizionamento. Infine si ottiene anche i vettori “Pber” e “Qber” dei punti di intersezione calcolati rispettivamente su P (t) e su Q(u).

Documenti correlati