Mathc complexes/Fichiers c : mul diag
Apparence
Installer et compiler ce fichier dans votre répertoire de travail.
mul_diag.c |
|---|
/* ------------------------------------ */
/* Save as : mul_diag.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
double **xrdiag_mZ(
double **A,
int n
)
{
int r;
int c;
isquare_mZ(A,"r_diag_mZ;","(A)");
for(r=R1, c=C1; r<A[R_SIZE][C0]; r++, c+=C2)
{
A[r][c ] = r_I(n); /* r_I(n); Positive or negative integers */
A[r][c+1] = r_I(n);
}
return(A);
}
/* ------------------------------------ */
/* ------------------------------------ */
double **xrpdiag_mZ(
double **A,
int n
)
{
int r;
int c;
isquare_mZ(A,"r_diag_mZ;","(A)");
for(r=R1, c=C1; r<A[R_SIZE][C0]; r++, c+=C2)
{
A[r][c ] = rp_I(n); /* rp_I(n); Positive integers */
A[r][c+1] = rp_I(n);
}
return(A);
}
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int rc)
{
double **A = rdiag_mZ(i_mZ(rc,rc),9); /* Positive or negative integers */
double **B = rpdiag_mZ(i_mZ(rc,rc),9); /* Positive integers */
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(RC3)+RC2);
while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Si nous multiplions deux matrices diagonales, nous obtenons une matrice diagonale. Il y a deux fonctions qui donnent des matrices diagonales, rdiag_mZ(); qui donne une matrice diagonale avec des valeurs positives ou négatives et rpdiag_mZ(); qui donne une matrice diagonale avec des valeurs uniquement positives.
Exemple de sortie écran :
A :
-9 -9i +0 +0i +0 +0i +0 +0i
+0 +0i -9 +8i +0 +0i +0 +0i
+0 +0i +0 +0i -5 +8i +0 +0i
+0 +0i +0 +0i +0 +0i +8 -6i
B :
+3 +4i +0 +0i +0 +0i +0 +0i
+0 +0i +1 +2i +0 +0i +0 +0i
+0 +0i +0 +0i +5 +4i +0 +0i
+0 +0i +0 +0i +0 +0i +6 +3i
AB :
+9 -63i +0 +0i +0 +0i +0 +0i
+0 +0i -25 -10i +0 +0i +0 +0i
+0 +0i +0 +0i -57 +20i +0 +0i
+0 +0i +0 +0i +0 +0i +66 -12i
Press return to continue
Press X return to stop