Application


Installer et compiler ces fichiers dans votre répertoire de travail.


c00a.c
/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
void fun()
{
int r = R6;
int c = C3;

double **A          = r_mZ(          i_mZ(r,c),99.);
double **A2         = c_mZ(A, eye_mZ(i_mZ(r,r)));
double **EigsValue  =                i_mZ(r,C1);

  clrscrn();
  printf(" A :");
  p_mZ(A, S4,P0, S4,P0, C3); 
  stop();
    
  clrscrn();
  printf(" Copy/Past into the octave windows \n\n\n");
  p_Octave_mZ(A2,"a",P0,P0);  
  printf(" EigenValues  = eigs (a,10) \n\n\n");
         
  eigs_mZ(A2, EigsValue);
  printf(" The %d EigsValues :",c );
  p_mZ(EigsValue, S10,P4, S10,P4, C3); 
       
  f_mZ(A);
  f_mZ(EigsValue);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
  fun();
} while(stop_w());

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */


Je veux calculer les valeurs propres de la matrice M qui a plus de lignes que de colonnes.

Le problème vient de ce que l'algorithme que j'utilise fonctionne uniquement sur les matrices carrées.

J'ai trouvé cet algorithme qui me permet de calculer les valeurs propres d'une matrice qui a plus de lignes que de colonnes.

Je ne soit pas sûr qu'il soit utile, mais je l'enregistre pour mémoire.

Je transforme simplement ma matrice A qui n'est pas carrée en une matrice A2 qui est carrée.


Exemple de sortie écran :
  --------------------------------------------
 A :
 -33 +55i   -6 +18i  -75 +92i 
 -25 -94i  -65 -43i  -31 -35i 
 -91  -4i  -26 -14i  +45 +90i 
 -30 +64i  -73 +75i  +22  +8i 
 +70 -86i  -43 +73i  -27 -83i 
 -41  -9i  +62 +32i   -5 -91i 

 Press return to continue. 

  --------------------------------------------
 Copy/Past into the octave windows 

 a=[
-33+55*i,-6+18*i,-75+92*i,+0+0*i,+0+0*i,+0+0*i;
-25-94*i,-65-43*i,-31-35*i,+0+0*i,+0+0*i,+0+0*i;
-91-4*i,-26-14*i,+45+90*i,+0+0*i,+0+0*i,+0+0*i;
-30+64*i,-73+75*i,+22+8*i,+1+0*i,+0+0*i,+0+0*i;
+70-86*i,-43+73*i,-27-83*i,+0+0*i,+1+0*i,+0+0*i;
-41-9*i,+62+32*i,-5-91*i,+0+0*i,+0+0*i,+1+0*i]

 EigenValues  = eigs (a,10) 


  The 3 EigsValues :
  -74.9181  +86.2770i 
 +100.8290  +34.0516i 
  -78.9109  -18.3285i 
   +1.0000   +0.0000i 
   +1.0000   -0.0000i 
   +1.0000   +0.0000i 


 Press return to continue
 Press X      to stop