Mathc complexes/a335
Installer et compiler ces fichiers dans votre répertoire de travail.
![]() |
c00b.c |
---|
/* ------------------------------------ */
/* Save as : c00b.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define RCA RC3
#define FACTOR_E +1.E-0
/* ------------------------------------ */
/* ------------------------------------ */
double **X_cosh2A_mZ(
double **M_Value,
double **cosh2A_Value
)
{
int r;
int c;
nb_Z cosh2A;
for ( r=R1; r<M_Value[R_SIZE][C0]; r++)
for ( c=C1; c<M_Value[C_SIZE][C0]; c+=C2)
if(((r-R1)*C2)==c-C1)
{
cosh2A = cosh_Z(i_Z(2.*M_Value[r][c],2.*M_Value[r][c+C1]));
cosh2A_Value[r][c ] = cosh2A.r;
cosh2A_Value[r][c+C1] = cosh2A.i;
}
return(cosh2A_Value);
}
/* ------------------------------------ */
/* ------------------------------------ */
double **X_DeuxcoshA_2mns1_mZ(
double **M_Value,
double **DeuxcoshA_2mns1_Value
)
{
int r;
int c;
nb_Z cosha;
nb_Z mns1 = {1,0};
nb_Z DeuxcoshA_2mns1;
for ( r=R1; r<M_Value[R_SIZE][C0]; r++)
for ( c=C1; c<M_Value[C_SIZE][C0]; c+=C2)
if(((r-R1)*C2)==c-C1)
{
cosha = cosh_Z(i_Z( M_Value[r][c], M_Value[r][c+C1]));
DeuxcoshA_2mns1 = sub_Z(smul_Z(2., mul_Z(cosha,cosha)),mns1);
DeuxcoshA_2mns1_Value[r][c ] = DeuxcoshA_2mns1.r;
DeuxcoshA_2mns1_Value[r][c+C1] = DeuxcoshA_2mns1.i;
}
return(DeuxcoshA_2mns1_Value);
}
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
{
int r = RCA;
int c = RCA;
double **A = rE_mZ(i_mZ(r,c),999,+1.E-4);
double **A_T = ctranspose_mZ(A,i_mZ(c,r));
double **V = i_mZ(r,c);
double **V_T = i_mZ(c,r);
double **U = i_mZ(r,c);
double **U_T = i_mZ(c,r);
double **U_TA = i_mZ(c,c);
double **X = i_mZ(c,c);
double **T1 = i_mZ(c,c);
double **cosh2A = i_mZ(c,c);
double **DeuxcoshAsinA = i_mZ(c,c);
clrscrn();
printf(" A :");
p_mZ(A, S9,P4, S8,P4, C3);
printf(" U :");
X_U_mZ(A_T,U,FACTOR_E);
p_mZ(U, S9,P4, S8,P4, C3);
printf(" V :");
X_V_mZ(A_T,V,FACTOR_E);
p_mZ(V, S9,P4, S8,P4, C3);
ctranspose_mZ(U,U_T);
ctranspose_mZ(V,V_T);
/* X = U_T * A * V */
printf(" X = U_T * A * V :");
mul_mZ(U_T, A, U_TA);
mul_mZ(U_TA, V, X);
p_mZ(X, S9,P4, S8,P4, C3);
stop();
clrscrn();
printf(" cosh(2*A) :");
X_cosh2A_mZ(X,cosh2A);
mul_mZ(V,cosh2A,T1);
mul_mZ(T1,U_T,cosh2A);
pE_mZ(cosh2A, S12,P4, S8,P4, C3);
printf(" 2 coshA**2 - 1 :");
X_DeuxcoshA_2mns1_mZ(X,DeuxcoshAsinA);
mul_mZ(V,DeuxcoshAsinA,T1);
mul_mZ(T1,U_T,DeuxcoshAsinA);
pE_mZ(DeuxcoshAsinA, S12,P4, S8,P4, C3);
f_mZ(A);
f_mZ(A_T);
f_mZ(V);
f_mZ(V_T);
f_mZ(U);
f_mZ(U_T);
f_mZ(U_TA);
f_mZ(X);
f_mZ(cosh2A);
f_mZ(DeuxcoshAsinA);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun();
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Exemple de sortie écran :
A :
-0.5500 -0.4400i +0.7200 +0.2200i +0.6900 -0.2500i
-0.9400 +0.4000i +0.6800 -0.3600i -0.1500 +0.4200i
+0.8400 -0.5500i -0.1500 +0.3500i -0.4100 -0.8200i
U :
-0.1578 +0.3424i +0.0969 -0.8500i +0.0907 +0.3432i
-0.6281 +0.2286i +0.0672 +0.1363i +0.6300 -0.3650i
+0.6411 +0.0000i +0.4951 -0.0000i +0.5864 +0.0000i
V :
+0.1192 +0.7870i +0.0015 -0.1170i -0.1601 -0.5720i
-0.2168 -0.4717i +0.1827 +0.3280i -0.4184 -0.6438i
+0.3114 -0.0000i +0.9194 +0.0000i +0.2403 +0.0000i
X = U_T * A * V :
+0.3040 +0.8988i +0.0000 +0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i -0.2206 +0.1644i +0.0000 +0.0000i
+0.0000 +0.0000i +0.0000 +0.0000i -0.4595 -0.2239i
Press return to continue.
cos(2*A) :
+3.1791e-01-7.5599e-01i -7.0299e-01-1.8330e+00i +8.6322e-01+9.1108e-01i
-4.9228e-01+8.8512e-01i +4.8201e-01+4.7544e-01i -1.1006e+00-5.3105e-01i
-3.4637e-01+5.0578e-01i -4.0673e-01+3.9008e-02i +1.0363e+00-3.2142e-01i
2 cosA**2 - 1 :
+3.1791e-01-7.5599e-01i -7.0299e-01-1.8330e+00i +8.6321e-01+9.1108e-01i
-4.9228e-01+8.8512e-01i +4.8201e-01+4.7544e-01i -1.1006e+00-5.3105e-01i
-3.4637e-01+5.0578e-01i -4.0673e-01+3.9008e-02i +1.0363e+00-3.2142e-01i
Press return to continue
Press X return to stop