Aller au contenu

Mathc complexes/02x

Un livre de Wikilivres.


Sommaire

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

c00a.c
/* ------------------------------------ */
/*  Xave as :   c00a.c                  */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define FACTOR_E        +1.E-2   
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int r,int c)
{
double **A   =          r_mZ(   i_mZ(r,c),99);	
double **Acc =                  i_mZ(c,c);

double **V      =               i_mZ(c,r);
double **U      =               i_mZ(c,r); 
double **V_T    =               i_mZ(r,c); 
double **V_TAcc =               i_mZ(r,c);  
double **X      =               i_mZ(r,r);
double **invX   =               i_mZ(r,r); 
double **UinvX  =               i_mZ(c,r);
double **Pinv   =               i_mZ(c,c);
double **APinv  =               i_mZ(r,c);

  clrscrn();
  printf(" A :");
  p_mZ(A, S5,P0, S4,P0, C6); 
        
  printf(" U :");
  X_U_mZ(A,U,FACTOR_E);
    p_mZ(U, S10,P4, S8,P4, C3);

  printf(" V :");
  X_V_mZ(A,V,FACTOR_E);
    p_mZ(V, S10,P4, S8,P4, C3); 
 
  ctranspose_mZ(V,V_T);
  stop(); 
   
  clrscrn();    
  printf(" X = V_T * A * U :");
  c_mZ(A, Acc);
  mul_mZ(V_T,  Acc, V_TAcc);          
  mul_mZ(V_TAcc, U,  X);             
  p_mZ(X, S10,P4, S9,P4, C3);
  
  printf(" invX :");
  X_inv_mZ(X, invX);
  pE_mZ(invX, S10,P4, S8,P4, C3);

  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");
  stop();  
   
  clrscrn();
  printf(" Pinv =  U * invX * V_T:");
  mul_mZ(U,invX,UinvX);
  mul_mZ(UinvX,V_T,Pinv); 
  pE_mZ(Pinv, S10,P4, S8,P4, C3); 

  printf(" Ide = A * Pinv");
  mul_mZ(A,Pinv,APinv); 
  p_mZ(APinv, S5,P2, S8,P4, C6); 
      
  f_mZ(A);  
  f_mZ(Acc);
  f_mZ(U);      
  f_mZ(V); 
  f_mZ(V_T);
  f_mZ(V_TAcc);  
  f_mZ(X);
  f_mZ(APinv);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
    fun(R3,C5);
    
} while(stop_w());

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Exemple de sortie écran :
 A :
  +97 +39i   +62 -61i   -21 +82i   -20 +24i    +7 -57i 
  +39 -67i   -48 +24i    +8 +96i   -29 -49i    +3 +33i 
  +44 -24i   +11 -30i    -2 +80i   +56 +41i   -76 +97i 

 U :
   -0.5767 +0.0144i    +0.2477 -0.1026i    +0.1352 -0.2130i 
   -0.0693 -0.3410i    +0.1149 -0.0746i    +0.2185 +0.6093i 
   +0.2587 +0.5025i    -0.0688 -0.4765i    +0.3063 +0.2575i 
   -0.1155 +0.1665i    -0.2296 +0.4287i    +0.4558 -0.0861i 
   +0.4309 +0.0000i    +0.6641 +0.0000i    +0.3769 -0.0000i 

 V :
   +0.3300 +0.5138i    -0.6344 -0.2204i    +0.1909 -0.3737i 
   +0.3911 -0.2575i    -0.2989 -0.4506i    -0.1698 +0.6779i 
   +0.6386 +0.0000i    +0.5065 -0.0000i    +0.5793 +0.0000i 
   +0.0000 +0.0000i    +0.0000 +0.0000i    +0.0000 +0.0000i 
   +0.0000 +0.0000i    +0.0000 +0.0000i    +0.0000 +0.0000i 

 Press return to continue. 


 X = V_T * A * U :
 -192.2513+123.5090i    -0.0000  -0.0000i    +0.0000  -0.0000i 
   +0.0000  +0.0000i   -69.4741+117.9357i    +0.0000  +0.0000i 
   +0.0000  -0.0000i    +0.0000  -0.0000i    +1.2412+106.9157i 

 invX :
-3.6819e-03-2.3654e-03i +0.0000e+00+0.0000e+00i +0.0000e+00+0.0000e+00i 
+0.0000e+00+0.0000e+00i -3.7082e-03-6.2948e-03i +0.0000e+00+0.0000e+00i 
+0.0000e+00+0.0000e+00i +0.0000e+00+0.0000e+00i +1.0857e-04-9.3519e-03i 

 Copy/Paste into the octave window.

 A=[
+97+39*i,+62-61*i,-21+82*i,-20+24*i,+7-57*i;
+39-67*i,-48+24*i,+8+96*i,-29-49*i,+3+33*i;
+44-24*i,+11-30*i,-2+80*i,+56+41*i,-76+97*i]

 format short e
 pinv(A)

 Press return to continue. 


 Pinv =  U * invX * V_T:
+2.7418e-03-1.2578e-03i +9.6767e-04+2.2749e-03i -5.6030e-04-5.0590e-04i 
+3.0451e-03+2.5985e-03i -2.4244e-03-3.4002e-03i +2.5088e-03-4.6530e-04i 
+1.5949e-03-2.5635e-03i -1.7819e-03-3.9695e-03i +1.7508e-04-2.1010e-03i 
-6.7249e-04-7.5629e-04i -3.3555e-03+2.9583e-03i +1.8836e-03-2.7651e-03i 
+2.7614e-03+1.9307e-03i -1.3421e-04-9.6610e-05i -2.2368e-03-4.8101e-03i 

+0.0000e+00+0.0000e+00i +0.0000e+00+0.0000e+00i 
+0.0000e+00+0.0000e+00i +0.0000e+00+0.0000e+00i 
+0.0000e+00+0.0000e+00i +0.0000e+00+0.0000e+00i 
+0.0000e+00+0.0000e+00i +0.0000e+00+0.0000e+00i 
+0.0000e+00+0.0000e+00i +0.0000e+00+0.0000e+00i 

 Ide = A * Pinv
+1.00 -0.0000i -0.00 +0.0000i -0.00 +0.0000i +0.00 +0.0000i +0.00 +0.0000i 
-0.00 +0.0000i +1.00 +0.0000i -0.00 -0.0000i +0.00 +0.0000i +0.00 +0.0000i 
+0.00 -0.0000i -0.00 -0.0000i +1.00 -0.0000i +0.00 +0.0000i +0.00 +0.0000i 


 Press   return to continue
 Press X return to stop