Aller au contenu

Mathc complexes/a74

Un livre de Wikilivres.


Application

Le code de la fonction :

/* ------------------------------------ */
/* ------------------------------------ */
double **c_Ab_subArxr_mZ(
double **Ab,
double **subA
)
{
int r;
int c;

 	for    (r=R1; r<   Ab[R_SIZE][C0];             r++)
 	   for (c=C1; c<(((Ab[R_SIZE][C0]-C1)*C2)+C1); c++)

            subA[r][c] = Ab[r][c];
            
return(subA);
}
/* ------------------------------------ */
/* ------------------------------------ */
Copier la sous-matrice de Ab dans subA.
Cette fonction permet par exemple de faire croire à la fonction det_mR(); que la matrice A est carrée. On peut calculer le déterminant de cette sous-matrice. Si il n'est pas nul, le système Ab peut être résolu avec l'algorithme du Total Pivoting.

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, int c)
{	
double **Ab    = r_mZ(i_Abr_Ac_bc_mZ(r,c,C1),99.);
double **A     = i_mZ(r,c);        
double **subA  = i_mZ(r,r);
                        
  clrscrn();
  printf(" Ab :");
  p_mZ(Ab,S5,P0,S4,P0,C6);
  
  printf(" A    : i_mZ(R,C);");
  p_mZ(c_Ab_A_mZ(Ab,A),S5,P0,S4,P0,C6);
  
  printf(" subA : i_mZ(R,R); \t\t c_Ab_subArxr_mZ(Ab,subA); ");
  p_mZ(c_Ab_subArxr_mZ(Ab,subA),S5,P0,S4,P0,C6);

  f_mZ(A);    
  f_mZ(Ab);
  f_mZ(subA);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));
do
{
  fun(rp_I(R3)+R1, rp_I(R3)+R3);


} while(stop_w());

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

Exemple de sortie écran :

 Ab :
  +22 -28i   +16 +82i   +88 -89i   -46  -5i   -92 -52i   -33 +55i 
  -49 -41i   -66 -66i   -57 -38i    -1 +38i    -8 -14i   -41 +93i 
  -84 -62i   +96 -63i   +85 -61i   -50 -35i   -16 -79i   +91  -3i 

 A    : i_mZ(R,C);
  +22 -28i   +16 +82i   +88 -89i   -46  -5i   -92 -52i 
  -49 -41i   -66 -66i   -57 -38i    -1 +38i    -8 -14i 
  -84 -62i   +96 -63i   +85 -61i   -50 -35i   -16 -79i 

 subA : i_mZ(R,R); 		 c_Ab_subArxr_mZ(Ab,subA); 
  +22 -28i   +16 +82i   +88 -89i 
  -49 -41i   -66 -66i   -57 -38i 
  -84 -62i   +96 -63i   +85 -61i 


 Press   return to continue
 Press X return to stop