Aller au contenu

Mathc matrices/c21o

Un livre de Wikilivres.


SommaireUtilise la commande "Retour en Arrière" de ton navigateur.


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


c00a.c
/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
#define   RA R3
#define   CA C2
/* ------------------------------------ */
#define FACTOR_E        +1.E-0         
/* ------------------------------------ */
void fun(void)
{
double tA[RA*CA]={
 1,  1, 
 2,  3, 
 3,  4
};

double tb[RA*C1]={
 1,
 7,
 9
};

double **A       = ca_A_mR(tA,i_mR(RA,CA));    
double **b       = ca_A_mR(tb,i_mR(RA,C1));
double **Pinv    =            i_mR(CA,RA);           
double **x       =            i_mR(CA,C1);          

  clrscrn();
  printf("Find the unique Least Squares Solution of Ax = b : \n\n");
  printf(" A :");
  p_mR(A,S5,P1,C6);
  printf(" b :");
  p_mR(b,S5,P1,C6);
   
  printf(" Pinv = V * invS_T * U_T ");
  Pinv_Rn_mR(A,Pinv,FACTOR_E); 
  pE_mR(Pinv,S12,P4,C6);   
  
  printf(" x = Pinv * b ");   
  mul_mR(Pinv,b,x); 
  p_mR(x,S10,P4,C6);  
  stop();  

  clrscrn();
  printf(" Solving this system yields a unique\n"
         " least squares solution, namely   \n\n");
  printf(" x = Pinv * b ");    
  p_mR(x,S10,P4,C6);  
  printf(" A :");
  p_mR(A,S10,P4,C6);
  printf(" b :");
  p_mR(b,S10,P4,C6);
  printf(" A x = b' :"); 
  mul_mR(A,x,b);  
  p_mR(b,S10,P4,C6);
  stop();
  
  f_mR(b);   
  f_mR(A);
  f_mR(Pinv);
  f_mR(x); 
}
/* ------------------------------------ */
int main(void)
{
  
  fun();

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


 Nous avons une liste de points dans un nuage. 
 Il faut que ce nuage puisse être modélisé par une droite.
 Il ne doit donc pas y avoir des valeurs extrêmes sortant du nuage.

Exemple de sortie écran :
Find the unique Least Squares Solution of Ax = b : 

 A :
 +1.0  +1.0 
 +2.0  +3.0 
 +3.0  +4.0 

 b :
 +1.0 
 +7.0 
 +9.0 

 Pinv = V * invS_T * U_T 
 +2.3333e+00  -1.6667e+00  +6.6667e-01 
 -1.6667e+00  +1.3333e+00  -3.3333e-01 

 x = Pinv * b 
   -3.3333 
   +4.6667 

 Press return to continue. 


 Solving this system yields a unique
 least squares solution, namely   

 x = Pinv * b 
   -3.3333 
   +4.6667 

 A :
   +1.0000    +1.0000 
   +2.0000    +3.0000 
   +3.0000    +4.0000 

 b :
   +1.0000 
   +7.0000 
   +9.0000 

 A x = b' :
   +1.3333 
   +7.3333 
   +8.6667 

 Press return to continue.