Aller au contenu

Mathc complexes/Fichiers c : ctranspose

Un livre de Wikilivres.


Application

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

ctranspose.c
/* ------------------------------------ */
/*  Save as :  ctranspose.c             */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
double **xctranspose_mZ(
double **A,
double **cA_t
)
{
int r,m;
int c,n;

  canItranspose_mZ(A,cA_t,"ctranspose_mZ();","(A or cA_t)");

  for (   r=R1, m=C1; r<A[R_SIZE][C0]; r++, m+=C2)
    for ( c=C1, n=R1; c<A[C_SIZE][C0]; c+=C2 ,n++)
        {
         cA_t[n][m]    =  A[r][c];;
         cA_t[n][m+C1] = -A[r][c+C1];;
        }
        
 return(cA_t);
}
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int r,int c)
{
double **A   =           r_mZ(  i_mZ(r,c),9);
double **A_t = ctranspose_mZ(A, i_mZ(c,r));

  clrscrn();
  printf(" A \n");
  p_mZ(A, S5,P0, S4,P0,C6);

  printf("\n A^t  (ctranspose_mZ)\n");
  p_mZ(A_t, S5,P0, S4,P0,C6);

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

  srand(time(&t));
  
  do 
         fun(rp_I(R6),rp_I(C6));
        
    while(stop_w());

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
La fonction ctranspose_mZ(); échange les lignes et les colonnes et prend le conjuguer.

Exemple de sortie écran :

    A 

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


 A^t  (ctranspose_mZ)

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


 Press return to continue
 Press X      to stop