Aller au contenu

Mathc complexes/03z

Un livre de Wikilivres.


Application

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

zmul.c
/* ------------------------------------ */
/*  Save as :   zmul.c                  */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
double **xzmul_mZ(
nb_Z z,
double **A,
double **zA
)
{
nb_Z a;
nb_Z b;
int r;
int c;

  dif_sizes_mZ(A,zA,"zmul_mZ();","(A or zA)");

  for (   r=R1; r<A[R_SIZE][C0]; r++)
    for ( c=C1; c<A[C_SIZE][C0]; c+=C2)
         {
          a = i_Z(A[r][c   ],    /* Create the number a     */
                  A[r][c+C1]);

          b = mul_Z(z,a);        /* Multiply a by b         */

          zA[r][c   ] = b.r;     /* Save the result into zA */
          zA[r][c+C1] = b.i;
         }

  return(zA);
}
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int r)
{
nb_Z z = {2,3};

double **A  =    r_mZ(      i_mZ(r,r),9.);
double **zA = zmul_mZ(z,A,  i_mZ(r,r)   );

  clrscrn();
  printf(" A");
  p_mZ(A, S4,P0, S4,P0, C3);   
  printf(" With z = ");p_Z(z,S3,P0,S3,P0);printf(" \n\n");
  printf(" zA");
  p_mZ(zA, S4,P0, S4,P0, C3);

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

  srand(time(&t));

do
{
   fun(RC3);

} while(stop_w());

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Il faut commencer par créer le nombre complexe a qui est un coefficient de la matrice avec la fonction i_Z();. On le multiplie par z avec la fonction mul_Z();. Remarque : Ici on travaille avec des nombres complexes, pas des matrices.

Exemple de sortie écran :

 A
  -1  -5i   +1  +6i   +7  +6i 
  +6  -1i   +5  +9i   +8  +2i 
  +9  -6i   -1  +3i   +3  -8i 

 With z =  +2 +3i  

 zA
 +13 -13i  -16 +15i   -4 +33i 
 +15 +16i  -17 +33i  +10 +28i 
 +36 +15i  -11  +3i  +30  -7i 


 Press   return to continue
 Press X return to stop