Aller au contenu

Mathc complexes/02y

Un livre de Wikilivres.


Sommaire

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

c00b.c
/* ------------------------------------ */
/*  save as:   c00b.c                  */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define   RA R2
#define   CA C3
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
{
double **A       =      r_mZ( i_mZ(RA,CA),99);
double **A_T     =            i_mZ(CA,RA);
double **AA_T    =            i_mZ(RA,RA); //             A*A_T
double **invAA_T =            i_mZ(RA,RA); //         inv(A*A_T)
double **Pinv    =            i_mZ(CA,RA); //     A_T*inv(A*A_T) 
double **APinv   =            i_mZ(RA,RA); //   A*A_T*inv(A*A_T)
  
  clrscrn();
  printf(" A:");
  p_mZ(A,S5,P0,S5,P0,C7);
  printf(" A_T:");
  p_mZ(ctranspose_mZ(A,A_T),S5,P0,S5,P0,C7);  

  printf(" AA_T:");
  p_mZ(mul_mZ(A,A_T,AA_T),S8,P0,S8,P0,C7);
  printf(" inv(AA_T):");
  pE_mZ(inv_mZ(AA_T,invAA_T),S5,P4,S5,P4,C7);  
  printf(" Pinv = A_T*inv(AA_T):");
  pE_mZ(mul_mZ(A_T,invAA_T,Pinv),S5,P4,S5,P4,C7);   
  stop();  
  
  clrscrn();
  printf(" Copy/Paste into the octave window.\n\n");
  p_Octave_mZ(A,"A",P0, P0);
  printf(" format short e\n");
  printf(" pinv(A)\n\n");
    
  printf(" Pinv = A_T*inv(AA_T):");
  pE_mZ(Pinv,S5,P4,S5,P4,C7);   

   printf(" Ide = A*PinvA ");
   mul_mZ(A,Pinv,APinv); 
     p_mZ(APinv, S10,P4, S8,P4, C3);  
  
  f_mZ(A);
  f_mZ(A_T);
  f_mZ(AA_T);       
  f_mZ(invAA_T);    
  f_mZ(Pinv);  
  f_mZ(APinv);      
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
    fun();
    
} while(stop_w());

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Exemple de sortie écran :
 A:
  -38  -24i   -66  -65i   -54   -1i 
  -38  +93i   +50  +81i   -53  +20i 

 A_T:
  -38  +24i   -38  -93i 
  -66  +65i   +50  -81i 
  -54   +1i   -53  -20i 

 AA_T:
  +13518      +0i    -6511   +7675i 
   -6511   -7675i   +22363      +0i 

 inv(AA_T):
+1.1126e-04+0.0000e+00i +3.2392e-05-3.8183e-05i 
+3.2392e-05+3.8183e-05i +6.7252e-05+0.0000e+00i 

 Pinv = A_T*inv(AA_T):
-1.9076e-03-1.7933e-03i -2.8701e-03-4.0261e-03i 
-2.6305e-03+6.5170e-03i +3.7066e-03-8.2184e-04i 
-6.9610e-03-2.5603e-03i -5.2754e-03+7.4924e-04i 

 Press return to continue. 


 Copy/Paste into the octave window.

 A=[
-38-24*i,-66-65*i,-54-1*i;
-38+93*i,+50+81*i,-53+20*i]

 format short e
 pinv(A)

 Pinv = A_T*inv(AA_T):
-1.9076e-03-1.7933e-03i -2.8701e-03-4.0261e-03i 
-2.6305e-03+6.5170e-03i +3.7066e-03-8.2184e-04i 
-6.9610e-03-2.5603e-03i -5.2754e-03+7.4924e-04i 

 Ide = A*PinvA 
   +1.0000 +0.0000i    -0.0000 +0.0000i 
   +0.0000 +0.0000i    +1.0000 +0.0000i 


 Press   return to continue
 Press X return to stop