Application


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


c00j.c
/* ------------------------------------ */
/*  Save as :   c00j.c                  */
/* ------------------------------------ */
#include    "v_a.h"
#include "dot_au.h"
/* ------------------------------------ */
void fun(int r,int rn)
{
double **A      =     r_mR(i_mR(r+rn,r+rn),9.);
double **U      =     r_mR(i_mR(r+rn,r),9.);
double **Q      =          i_mR(r+rn,r);
double **R      =          i_mR(r,r);
double **QR     =          i_mR(r+rn,r);

  clrscrn();
  
  printf(" A :");
  p_mR(A,S3,P0,C6);
  
  printf(" U :        r > c ");
  p_mR(U,S3,P0,C6);
  stop();
  
  clrscrn();  
  QR_Au_mR(A,U,Q,R);
      
  printf(" Q :");
  p_mR(Q,S10,P4,C6);
  
  printf(" R :");
  p_mR(R,S10,P4,C6);
  stop();
  
  clrscrn();
  printf(" U :");
  p_mR(U,S7,P2,C6);
  
  printf(" U = Q * R  :");  
  mul_mR(Q,R, QR);
  p_mR(QR,S7,P2,C6);  
 
  f_mR(A);
  f_mR(U);
  f_mR(Q);
  f_mR(R);
  f_mR(QR);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
  fun(rp_I(R2)+R2,rp_I(R2));

} while(stop_w());

  return 0;
}

/* ------------------------------------ */
/* ------------------------------------ */


Nous calculons la QR décomposion du vecteur u. Avec u un vecteur qui a plus de lignes que de colonnes .

Exemple de sortie écran :
 ------------------------------------ 

 A :
-5.000 -9.000 -7.000 -3.000 -1.000 
+4.000 -9.000 -7.000 +8.000 +8.000 
+4.000 -7.000 -1.000 -9.000 +6.000 
+6.000 -9.000 -9.000 -1.000 +2.000 
-5.000 +2.000 +6.000 -5.000 -3.000 

 U :        r > c 
-1.000 +6.000 -9.000 -5.000 
+6.000 -9.000 -9.000 -5.000 
+6.000 +2.000 -5.000 +8.000 
+8.000 -1.000 +4.000 +4.000 
+2.000 +2.000 -3.000 -1.000 

 Press return to continue. 

 
 Q :
-0.00496 +0.04939 -0.06866 -0.02938 
+0.02978 -0.04189 -0.03607 -0.15335 
+0.02978 +0.06178 -0.01176 +0.18196 
+0.03970 +0.04781 +0.05988 +0.04454 
+0.00993 +0.03316 -0.01365 -0.00134 

 R :
+221.50930 -152.99045 -121.55270  +56.89564 
  +0.00000 +106.11278   +4.95322  -36.17388 
  -0.00000   +0.00000 +143.43084  +21.99662 
  -0.00000   +0.00000   +0.00000  +48.35789 

 Press return to continue. 

 

 U :
-1.000 +6.000 -9.000 -5.000 
+6.000 -9.000 -9.000 -5.000 
+6.000 +2.000 -5.000 +8.000 
+8.000 -1.000 +4.000 +4.000 
+2.000 +2.000 -3.000 -1.000 

 U = Q * R  :
-1.000 +6.000 -9.000 -5.000 
+6.000 -9.000 -9.000 -5.000 
+6.000 +2.000 -5.000 +8.000 
+8.000 -1.000 +4.000 +4.000 
+2.000 +2.000 -3.000 -1.000 


 Press return to continue
 Press X      to stop