next up previous   
Next: Interpolazione di funzioni Up:Introduzione  Previous: Risoluzione di sistemi lineari e fattorizzazioni di matrici
Intro Gen: Introduzione Generale  Home: Home page

Autoval.m

 

% CALCOLO DEGLI AUTOVALORI DI UNA MATRICE

 

help autoval;

inizio=0;

while inizio==0

clear;

inizio=0;

A=input('Introduci la matrice (di ordine almeno 2x2) : ');

dom=0;

while dom==0

      [n,m]=size(A);

      if m~=n | n==1

         disp('La matrice deve essere quadrata e di ordine almeno 2x2');

         A=input('Introduci nuovamente la matrice:');   

      else

         dom=1;

      end

end

if rank(A)==0

    disp('Hai introdotto una matrice nulla per cui i suoi autovalori sono tutti nulli');

else

singolare=1;

if rank(A)<n

   singolare=0;

end

i=1;                                                              % verifica del tipo di matrice:

simmetrica=1;

while i<=n

      j=1;                                                        % se é simmetrica

      while j~=i & j<=n

            if A(i,j)~=A(j,i)

               simmetrica=0;

               tridiagonale=0;

               j=n;

               i=n;

            end

            j=j+1;

      end

      i=i+1;

end

if simmetrica==1                                                  % se é tridiagonale simmetrica

   i=3;

   tridiagonale=1;

   while i<=n

         j=1;

         while j<=i-2            

               if A(i,j)~=0

                  tridiagonale=0;

                  j=i;

                  i=n;

               end

               j=j+1;

         end

   i=i+1;

   end

end

disp('Scegliere tra i seguenti metodi di calcolo degli autovalori: ');

dom=0;

while dom==0

      disp('1. Metodo delle potenze (per il calcolo dell''autovalore di modulo minimo)');

      if singolare==0

         disp('                     (non applicabile per questo tipo di matrice) ');  

      end     

      disp('2. Metodo delle potenze (per il calcolo dell''autovalore di modulo massimo)');

      disp('3. Metodo delle potenze inverse (per il calcolo di un particolare autovalore)');

      disp('4. Metodo di calcolo di tutti gli autovalori reali di matrici triangolari simmetriche');

      if tridiagonale==0

         disp('                     (non applicabile per questo tipo di matrice) ');

      end

      if simmetrica==1

         disp('5. Metodo di calcolo dell''autovalore minimo per matrici simmetriche');

         disp('6. Metodo di calcolo dell''autovalore massimo per matrici simmetriche');

      else

disp('5. Metodo di calcolo dell''autovalore di modulo minimo per matrici simmetriche ');

         disp('                     (non applicabile per questo tipo di matrice)');

disp('6. Metodo di calcolo dell''autovalore massimo per matrici simmetriche');

         disp('                     (non applicabile per questo tipo di matrice)');

      end

      disp('7. Metodo QR (per il calcolo di tutti gli autovalori)');

      if simmetrica==0

         disp(' ATTENZIONE : i primi 3 metodi convergono sempre SOLO SE la matrice ha solo autovalori reali ');

      end

      s=input('Introduci il numero corrispondente : ');

      err=0;

      while err==0

         if (s~=1 & s~=2 & s~=3 & s~=4 & s~=5 & s~=6 & s~=7 ) | (s==1 & singolare==0) | ...

            (s==4 & tridiagonale==0) | ((s==5 | s==6) & simmetrica==0)

            s=input('Il valore introdotto é errato.Introducilo di nuovo : ');

         else

            err=1;

         end

   end

 

% METODO DELLE POTENZE PER IL CALCOLO DELL'AUTOVALORE DI MODULO MINIMO oppure

% CALCOLO DELL' AUTOVALORE DI MODULO MINIMO DI UNA MATRICE SIMMETRICA

 

   if s==1 | s==5

      if simmetrica==0        

         [l,risp]=autmin(A,n);

      else

         [l,risp]=autmin(A,n);

      end

      if risp==1

         disp('Metodo non applicabile');

         disp('Utilizzare altri metodi se possibile');

      else

         dom=1;

         disp('L''autovalore di modulo minimo della matrice : ');

         disp(A);

         disp('é il seguente : ');

         l

      end

   end

 

% METODO DELLE POTENZE PER IL CALCOLO DELL'AUTOVALORE DI MODULO MASSIMO oppure

% CALCOLO DELL' AUTOVALORE DI MODULO MINIMO DI UNA MATRICE SIMMETRICA

 

   if s==2 | s==6

      if simmetrica==0

         l=autmax(A,n);

      else

         l=autmaxsi(A,n);

      end

      dom=1;

      disp('L''autovalore di modulo massimo della matrice : ');

      disp(A);

      disp('é il seguente : ');

      l

   end

 

% METODO DELLE POTENZE INVERSE

 

   if s==3

      [H,risp]=aupotinv(A,n,simmetrica);

      if risp==1       

         disp('Metodo non applicabile');

         disp('Utilizzare altri metodi se possibile oppure fissare un autovalore approssimato diverso :');

         disp('Scegli nuovamente : ');

      else

         dom=1;    

         disp('L''autovalore della matrice : ');

         disp(A);

         disp('é il seguente : ');

         H

      end

   end

 

% METODO DI CALCOLO DI TUTTI GLI AUTOVALORI REALI DELLE MATRICI TRIDIAGONALI SIMMETRICHE

 

   if s==4

      e=input('Introduci l''errore massimo che si può commettere (massimo 0.1) : ');

      err=0;

      while err==0

            if e>0.1 | e<=0

               disp(' Il valore dell''errore massimo introdotto non é corretto');

               e=input('Introducilo nuovamente : ');

            else

               err=1;

            end 

      end

      disp('Tutti gli autovalori della matrice  :');

      disp(A);

      disp('sono i seguenti : ');

      l=auttrsim(A,n,e);

      l=l'

      dom=1;

   end

 

% METODO QR

  

   if s==7

      [l,risp]=autmetqr(A,n);

      dom=1;

      if risp==0

         disp('Tutti gli autovalori della matrice  :');

         disp(A);

         disp('sono i seguenti : ');

         l=l'

      else

         disp('Metodo non applicabile. Provare con gli altri se é possibile');

      end

   end

end

end

inizio=input('Se vuoi ricominciare nuovamente premi il tasto ''0'' :');

end


next up previous   
Next: Interpolazione di funzioni Up:Introduzione  Previous: Risoluzione di sistemi lineari e fattorizzazioni di matrici
Intro Gen: Introduzione Generale  Home: Home page
Vito Marinelli
8-5-2000

 

HyperCounter
BPath Contatore