Mathc complexes/Fichiers c : pow r
Apparence
Installer et compiler ce fichier dans votre répertoire de travail.
pow.c |
|---|
/* ------------------------------------ */
/* Save as : pow.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
double **xpow_mZ(
int n,
double **A,
double **A_n
)
{
double **T;
int i;
isquare_mZ(A, "pow_mZ();","(A)");
dif_sizes_mZ(A,A_n,"pow_mZ();","(A or A_n)");
T = i_RC_mZ(A[R_SIZE][C0],A[C_SIZE][C0]);
c_mZ(A,A_n);
if(!n) eye_mZ(A_n);
else for(i=n-1; i; i--)
{
mul_mZ(A_n,A,T);
c_mZ(T,A_n);
}
f_mZ(T);
return(A_n);
}
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int rc)
{
int n;
double **A = r_mZ(i_mZ(rc,rc),9);
double **A_n = i_mZ(rc,rc);
for(n=0; n<6; n++)
{
clrscrn();
printf(" A : ");
p_mZ(A, S5,P0, S4,P0, C4);
printf(" A^%d :",n);
p_mZ(pow_mZ(n,A,A_n), S10,P0, S8,P0, C4);
stop();
}
f_mZ(A);
f_mZ(A_n);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do{
fun(rp_I(R2)+R2);
clrscrn();
}while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Je me contente de multiplier les matrices entre elles. La puissance zéro donne la matrice identité.
Exemple de sortie écran :
A :
-5 +6i -1 +8i
-9 +4i -7 -7i
A^0 :
+1 +0i +0 +0i
+0 +0i +1 +0i
Press return to continue.
A :
-5 +6i -1 +8i
-9 +4i -7 -7i
A^1 :
-5 +6i -1 +8i
-9 +4i -7 -7i
Press return to continue.
A :
-5 +6i -1 +8i
-9 +4i -7 -7i
A^2 :
-34 -136i +20 -95i
+112 -39i -23 +22i
Press return to continue.
A :
-5 +6i -1 +8i
-9 +4i -7 -7i
A^4 :
-18805 -2172i -11970 +3135i
-10830 -10545i -1420 -12432i
Press return to continue.