Aller au contenu

Mathc complexes/Fichiers c : mul up

Un livre de Wikilivres.


Application

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

mul_up.c
/* ------------------------------------ */
/*  Save as :   mul_up.c                */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
double **xrupper_mZ(
double **A,
int      n
)
{
int      r;
int      c;

  isquare_mZ(A,"r_upper_mZ;","(A)");

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

             if(c>=(((2*r)-R1))) { A[r][c   ] = r_I(n);
                                   A[r][c+C1] = r_I(n);}
 return(A);
}
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int rc)
{
double **A  = rupper_mZ(i_mZ(rc,rc),9);
double **B  = rupper_mZ(i_mZ(rc,rc),9);
double **AB =           i_mZ(rc,rc);

  clrscrn();

  printf(" A : ");
  p_mZ(A, S5,P0, S4,P0,C6);

  printf(" B : ");
  p_mZ(B, S5,P0, S4,P0,C6);

  printf(" AB : ");
  p_mZ(mul_mZ(A,B,AB), S5,P0, S4,P0,C6);
  
  f_mZ(A);
  f_mZ(B);
  f_mZ(AB);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));
  
   do 
         fun(rp_I(RC5));
        
    while(stop_w());
        
  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Si nous multiplions deux matrices triangulaires supérieures, nous obtenons une matrice triangulaire supérieure.

Si vous utilisez la fonction xrupper_mZ(); en modifiant f(c>=(((R2*r)-R1))) par f(c>(((R2*r)-R1))) vous pourrez mieux comprendre l'algorithme.

Exemple de sortie écran :

 A : 
   +2  +2i    -3  -3i    +4  -1i 
   +0  +0i    -5  +4i    +4  +6i 
   +0  +0i    +0  +0i    -3  +8i 

 B : 
   +2  -9i    -7  -1i    +4  -9i 
   +0  +0i    -3  +6i    -3  -3i 
   +0  +0i    +0  +0i    -3  -3i 

 AB : 
  +22 -14i   +15 -25i   +11  -1i 
   +0  +0i    -9 -42i   +33 -27i 
   +0  +0i    +0  +0i   +33 -15i 


 Press return to continue
 Press X      to stop