Aller au contenu

Mathc complexes/a52

Un livre de Wikilivres.


Application

Le code de la fonction :

/* ------------------------------------ */
/* ------------------------------------ */
double **rsymmetric_mRZ(
double **A,
int      n
)
{
int r = rsize_Z(A);
int c = csize_Z(A);	
	
double **B   = r_mRZ(i_mZ(r,c),n);
double **B_T = transpose_mZ(B,i_mZ(c,r));

         mul_mZ(B,B_T, A);
         
   f_mZ(B);
   f_mZ(B_T);

 return(A);
}
/* ------------------------------------ */
/* ------------------------------------ */
J'utilise ici une propriété de l'algèbre linéaire qui dit que si on multiplie une matrice par sa transposée le résultat est une matrice symétrique.

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

c00.c
/* ------------------------------------ */
/*  Save as :   c00.c                   */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
void fun(int rc)
{
double **A   = rsymmetric_mRZ(i_mZ(rc,rc), 999);

  clrscrn();

  printf(" A : Real Values");
  p_mZ(A, S10,P0, S3,P0, C8);
  
  printf(" A : Real Values");;
  p_mRZ(A, S10,P0, C8);
   
  f_mZ(A);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));
  
  do
        fun(rp_I(RC3)+R2);

  while(stop_w());       

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Exemple de sortie écran :
 A : Real Values
   +646234 +0i    -386897 +0i    +265606 +0i 
   -386897 +0i    +670874 +0i    +468657 +0i 
   +265606 +0i    +468657 +0i   +1327677 +0i 

 A : Real Values
   +646234    -386897    +265606 
   -386897    +670874    +468657 
   +265606    +468657   +1327677 


 Press   return to continue
 Press X return to stop