Aller au contenu

Mathc matrices/c20b

Un livre de Wikilivres.


Application


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


c01b.c
/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include      "v_a.h"
#include "dot_diag.h"
/* ------------------------------------ */
void fun(int r)
{
double **A  =    rpdiag_mR(i_mR(r,r),9);
double **u  =         r_mR(i_mR(r,C1),99.);
double **v  =         r_mR(i_mR(r,C1),99.);

  clrscrn();
  printf(" A :");
  p_mR(A,S3,P0,C6);
  printf(" u :");
  p_mR(u,S3,P0,C6);
  printf(" v :");
  p_mR(v,S3,P0,C6);
 
  printf("    <u,v> = v^t sqrt(A)^t  sqrt(A) u   \n");
  printf("    <u,v> = %.0f    \n", dot_Diag_R(A,u,v));
  printf("    <v,u> = %.0f    \n", dot_Diag_R(A,v,u));
  
  f_mR(A);
  f_mR(u);
  f_mR(v);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

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

} while(stop_w());

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


Dans cet exemple nous utilisons une matrice diagonale aléatoire.


Exemple de sortie écran :
 ------------------------------------ 
 A :
 +6  +0 
 +0  +2 

 u :
-43 
+66 

 v :
-10 
+19 

    <u,v> = v^t sqrt(A)^t  sqrt(A) u   
    <u,v> = 5088    
    <v,u> = 5088    

 Press return to continue
 Press X      to stop