Aller au contenu

Mathc complexes/01y

Un livre de Wikilivres.

Application

Installer et compiler ce fichier dans votre répertoire de travail.

c00a.c
/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
void fun(int r)
{
double s = rp_I(9);

double **A      =  rdefinite_positive_mZ(     i_mZ(r,r), 9);
double **sA     =                smul_mZ(s,A, i_mZ(r,r));

double **EValue =                eigs_mZ(sA,  i_mZ(r,C1));

  clrscrn();  
  printf(" A: ");
  p_mZ(A, S6,P0, S4,P0, C4);
  
  printf(" %+.0f*A   s > 0 ",s);
  p_mZ(sA, S6,P0, S4,P0, C4);
  
  printf(" %+.0f*A : EValue are positives",s);
  p_mZ(EValue, S11,P3, S8,P3, C4);   
  
  f_mZ(A);
  f_mZ(sA);
  f_mZ(EValue);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
  fun(rp_I(R3)+R1);

} while(stop_w());

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

Si A est une matrice hermitienne définie positive et si s est un réel strictement positif, alors s*A est est une matrice hermitienne définie positive. Les valeurs propres sont positives.

Exemple de sortie écran :

 A: 
   +44  +0i    +27 -13i    -34  +3i 
   +27 +13i    +41  +0i    -35  -7i 
   -34  -3i    -35  +7i   +199  +0i 

 +3*A   s > 0 
  +132  +0i    +81 -39i   -102  +9i 
   +81 +39i   +123  +0i   -105 -21i 
  -102  -9i   -105 +21i   +597  +0i 

 +3*A : EValue are positives
   +647.873  +0.000i 
   +167.084  +0.000i 
    +37.044  -0.000i 


 Press   return to continue
 Press X return to stop