Mathc matrices/c12fn16

Un livre de Wikilivres.


Application


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


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

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

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

  srand(time(&t));

int i;

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

} while(stop_w());

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



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


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

pinv(A)


 Press return to continue. 


 ------------------------------------ 
 PseudoInverse = V * invS_T * U_T 
 +7.9922e-03  +3.4755e-02  +3.4716e-02  +7.5562e-03 
 -3.7185e-02  -9.7819e-03  +4.9965e-03  +1.8615e-02 
 -2.3415e-02  -2.9148e-02  -2.3232e-02  +4.4843e-02 
 +4.1020e-02  -3.0994e-02  +9.8942e-03  +4.2575e-02 
 -3.3286e-02  -5.4933e-02  +2.4241e-02  -6.2882e-03 
 -5.6207e-03  -1.4141e-02  -3.2386e-02  -3.1389e-02 
 -1.7374e-02  +2.8334e-02  -9.2607e-03  +9.4748e-03 

 Ide =  A * PseudoInverse 
 +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