Aller au contenu

Mathc complexes/a90

Un livre de Wikilivres.


Application

Le code de la fonction :

/* ------------------------------------ */
void c_Inv_A_mZ(
double **AID,
double **A
)
{
int r;
int c;
int T = A[C_SIZE][C0];    

    --T;

 	for    (r=R1; r<A[R_SIZE][C0]; r++)
 	   for (c=C1; c<A[C_SIZE][C0]; c++)

            A[r][c] = AID[r][c+T];
}
/* ------------------------------------ */
/* ------------------------------------ */
Copier la matrice inverse du système Ab dans la matrice invA.

Installer et compiler ce fichier dans votre répertoire de travail.

c00a.c
/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
void fun(int r)
{
double **A    =        r_mZ(      i_mZ(r,r),999);
double **ID   =      eye_mZ(      i_mZ(r,r));
double **AID  = c_A_b_Ab_mZ(A,ID, i_Abr_Ac_bc_mZ(   r,   r,   r));
/*                                i_Abr_Ac_bc_mZ(R_Ab, C_A, C_b));  */
double **invA =                   i_mZ(r,r);
    
  clrscrn();
  printf(" A:");
  p_mZ(A, S6,P0, S5,P0, C4);

  printf(" ID:");
  p_mZ(ID, S6,P0, S5,P0, C4);
  stop();
  
  clrscrn();  
  printf(" AID:");
  p_mZ(AID, S6,P0, S5,P0, C4);
  printf("  gj_TP_mZ(AID) :");
  gj_mZ(AID);  
  p_mZ(AID, S8,P4, S8,P4, C4);
  stop();
  
  clrscrn(); 
  printf(" Copy/Paste into the octave window.\n");
  p_Octave_mZ(A,"A",P0,P0);
  printf("format short e\n");
  printf(" inv(A)\n\n");

  printf(" invA :                      c_Inv_A_mZ(Ab,invA);");
  c_Inv_A_mZ(AID, invA);  
  pE_mZ(invA, S10,P4, S10,P4, C3);
  
  f_mZ(invA);
  f_mZ(AID);
  f_mZ(ID);
  f_mZ(A);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));
do
{
  fun(R4);


} while(stop_w());

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

Exemple de sortie écran :

 A:
  +328 +126i   -584 -549i   +618 +274i    -56 +604i 
  +738 +234i   +477 +768i   +402 +927i   -373 +412i 
  +298  +72i   +764 -843i   -392 -175i   -116 -765i 
   +56 +457i   -443 +713i   +413 -300i   +330 +205i 

 ID:
    +1   +0i     +0   +0i     +0   +0i     +0   +0i 
    +0   +0i     +1   +0i     +0   +0i     +0   +0i 
    +0   +0i     +0   +0i     +1   +0i     +0   +0i 
    +0   +0i     +0   +0i     +0   +0i     +1   +0i 

 Press return to continue. 


 AID:
  +328 +126i   -584 -549i   +618 +274i    -56 +604i 
  +738 +234i   +477 +768i   +402 +927i   -373 +412i 
  +298  +72i   +764 -843i   -392 -175i   -116 -765i 
   +56 +457i   -443 +713i   +413 -300i   +330 +205i 

    +1   +0i     +0   +0i     +0   +0i     +0   +0i 
    +0   +0i     +1   +0i     +0   +0i     +0   +0i 
    +0   +0i     +0   +0i     +1   +0i     +0   +0i 
    +0   +0i     +0   +0i     +0   +0i     +1   +0i 

  gj_TP_mZ(AID) :
 +1.0000 +0.0000i  -0.0000 -0.0000i  +0.0000 +0.0000i  -0.0000 -0.0000i 
 -0.0000 -0.0000i  +1.0000 +0.0000i  +0.0000 +0.0000i  +0.0000 -0.0000i 
 -0.0000 +0.0000i  +0.0000 +0.0000i  +1.0000 +0.0000i  +0.0000 +0.0000i 
 +0.0000 +0.0000i  -0.0000 +0.0000i  -0.0000 +0.0000i  +1.0000 +0.0000i 

 +0.0009 -0.0005i  +0.0003 +0.0003i  +0.0003 -0.0001i  -0.0003 -0.0009i 
 -0.0001 +0.0008i  -0.0001 -0.0003i  -0.0003 +0.0002i  +0.0000 -0.0005i 
 -0.0012 -0.0003i  +0.0006 -0.0008i  +0.0010 -0.0005i  +0.0015 +0.0016i 
 +0.0014 -0.0014i  +0.0000 +0.0009i  +0.0002 +0.0019i  -0.0021 +0.0006i 

 Press return to continue. 


 Copy/Paste into the octave window.
 A=[
+328+126*i,-584-549*i,+618+274*i,-56+604*i;
+738+234*i,+477+768*i,+402+927*i,-373+412*i;
+298+72*i,+764-843*i,-392-175*i,-116-765*i;
+56+457*i,-443+713*i,+413-300*i,+330+205*i]

format short e
 inv(A)

 invA :                      c_Inv_A_mZ(Ab,invA);
+8.9986e-04-5.3506e-04i +2.7439e-04+2.8779e-04i +2.9471e-04-1.3514e-04i 
-1.2945e-04+7.6326e-04i -7.7332e-05-3.3282e-04i -2.5647e-04+2.0358e-04i 
-1.1661e-03-2.8481e-04i +6.3681e-04-8.2863e-04i +1.0289e-03-5.0229e-04i 
+1.4109e-03-1.4311e-03i +3.5436e-05+8.8542e-04i +1.9744e-04+1.8835e-03i 

-3.1438e-04-9.2411e-04i 
+2.8187e-05-4.5368e-04i 
+1.5038e-03+1.6286e-03i 
-2.1403e-03+5.8078e-04i 


 Press   return to continue
 Press X return to stop