Mathc matrices/c12fn3

Un livre de Wikilivres.


Application


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


cgn6g.c
/* ------------------------------------ */
/*  Save as :    cgn6g.c                */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
#define FACTOR_E        +1.E-0         
/* ------------------------------------ */
void fun(int r,int c)
{
double **B       = r_mR(i_mR(c,r),9.);
double **Pinv    = i_mR(r,c);           
double **PinvB   = i_mR(r,r); 

  clrscrn();
  printf(" Copy/Past into the octave windows \n\n\n");
  p_Octave_mR(B,"B",P2);
  printf("pinv(B)\n\n\n");
  stop();

  clrscrn();  
  printf(" Pinv = V * invS_T * U_T ");
  pseudo_Rn_mR(B,Pinv,FACTOR_E); 
  pE_mR(Pinv,S12,P4,C5);    
  
  printf(" Ide = PseudoInverse * B ");   
  mul_mR(Pinv,B,PinvB); 
  p_mR(PinvB,S10,P6,C10);  
    
  f_mR(B);  
  f_mR(Pinv);
  f_mR(PinvB); 
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

int i;

do
{
  i = rp_I(R3)+R1;
  
  fun(i,i+R6);

} while(stop_w());

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



Exemple de sortie écran :
 ------------------------------------ 
 Copy/Past into the octave windows 


 B=[
-2.00,-9.00,+1.00;
+6.00,+7.00,-4.00;
-6.00,-5.00,-8.00;
+1.00,-1.00,-6.00;
-8.00,-5.00,-6.00;
+5.00,+9.00,+8.00;
+6.00,-6.00,-6.00;
-2.00,-9.00,+9.00;
+4.00,+4.00,+7.00]

pinv(B)


 Press return to continue. 


 ------------------------------------ 
 Pinv = V * invS_T * U_T 
 +1.1138e-02  +2.4665e-02  -2.1793e-02  +1.4151e-02  -3.7185e-02 
 -2.9436e-02  +1.1324e-02  +7.9218e-04  -4.5451e-03  +5.7982e-03 
 +7.5670e-03  -1.8246e-02  -1.6644e-02  -1.7432e-02  -9.5160e-03 

 +3.3418e-03  +6.3385e-02  +5.3998e-03  +1.1421e-02 
 +1.7546e-02  -3.8223e-02  -3.2356e-02  +1.4417e-03 
 +1.5901e-02  -1.9193e-02  +3.0340e-02  +1.5597e-02 

 Ide = PseudoInverse * B 
 +1.000000  -0.000000  +0.000000 
 +0.000000  +1.000000  +0.000000 
 -0.000000  -0.000000  +1.000000 


 Press return to continue
 Press X      to stop