Mathc matrices/c12fn2

Un livre de Wikilivres.


Application


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


cgn2g.c
/* ------------------------------------ */
/*  Save as :   cgn2g.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,C10);    
  
  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+R2);

} while(stop_w());

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



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


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

pinv(B)


 Press return to continue. 


 ------------------------------------ 
 Pinv = V * invS_T * U_T 
 -2.4342e-02  -2.1733e-02  +4.2319e-02  -3.3242e-02  +1.0995e-02  -1.9675e-02 
 -6.1720e-03  +1.9905e-02  +2.9593e-02  -1.0775e-02  +7.1818e-02  -3.9993e-02 
 +5.8232e-02  -2.7683e-02  +1.4116e-02  +2.4681e-02  -6.9007e-02  -5.2172e-03 
 +3.8650e-02  +3.1283e-02  +2.5795e-02  -2.5786e-02  -2.2175e-02  +3.2120e-02 

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


 Press return to continue
 Press X      to stop