Mathc complexes/08c
Apparence
Installer et compiler ces fichiers dans votre répertoire de travail.
c00c.c |
|---|
/* ------------------------------------ */
/* Save as : c00c.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define RCA RC3
#define FACTOR_E +1.E-0
/* ------------------------------------ */
/* ------------------------------------ */
double **X_cos2A_mZ(
double **M_Value,
double **cos2A_Value
)
{
int r;
int c;
nb_Z cos2A;
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)
{
cos2A = cos_Z(i_Z(2.*M_Value[r][c],2.*M_Value[r][c+C1]));
cos2A_Value[r][c ] = cos2A.r;
cos2A_Value[r][c+C1] = cos2A.i;
}
return(cos2A_Value);
}
/* ------------------------------------ */
/* ------------------------------------ */
double **X_Imns2sinA_2_mZ(
double **M_Value,
double **Imns2sinA_2_Value
)
{
int r;
int c;
nb_Z sina;
nb_Z Ipls = {1,0};
nb_Z Imns2sinA_2;
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)
{
sina = cos_Z(i_Z( M_Value[r][c], M_Value[r][c+C1]));
Imns2sinA_2 = sub_Z(Ipls,smul_Z(2., mul_Z(sina,sina)));
Imns2sinA_2_Value[r][c ] = Imns2sinA_2.r;
Imns2sinA_2_Value[r][c+C1] = Imns2sinA_2.i;
}
return(Imns2sinA_2_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 **cos2A = i_mZ(c,c);
double **Imns2sinA_2 = 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);
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(" cos(2*A) :");
X_cos2A_mZ(X,cos2A);
mul_mZ(V,cos2A,T1);
mul_mZ(T1,U_T,cos2A);
pE_mZ(cos2A, S12,P4, S8,P4, C3);
printf(" 1 - 2 sinA**2:");
X_Imns2sinA_2_mZ(X,Imns2sinA_2);
mul_mZ(V,Imns2sinA_2,T1);
mul_mZ(T1,U_T,Imns2sinA_2);
pE_mZ(Imns2sinA_2, 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(cos2A);
f_mZ(Imns2sinA_2);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun();
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Nous avons vu que :
cos(x+y) = cos(x)cos(y)-sin(x)sin(y)
posons x = y
cos(x+x) = cos(x)cos(x)-sin(x)sin(x)
cos(2x) = cos(x)**2-sin(x)**2 cos(x)**2 + sin(x)**2 = 1
cos(x)**2 = 1-sin(x)**2
cos(2x) = (1-sin(x)**2)-sin(x)**2
cos(2x) = 1-2*sin(x)**2
Exemple de sortie écran :
A :
-0.0971 -0.0886i -0.0717 -0.0859i -0.0554 +0.0816i
-0.0039 -0.0616i -0.0210 +0.0897i -0.0456 -0.0731i
-0.0661 -0.0451i -0.0032 -0.0808i -0.0628 -0.0941i
U :
+0.5147 -0.6060i +0.0297 +0.3236i -0.4113 +0.3050i
+0.1229 +0.1756i +0.6303 -0.6012i -0.4098 +0.1653i
+0.5674 +0.0000i +0.3683 -0.0000i +0.7365 +0.0000i
V :
+0.3729 -0.4876i +0.1722 +0.1860i -0.6622 +0.3470i
+0.0596 -0.5149i -0.3712 +0.6337i +0.3972 -0.1851i
+0.5954 -0.0000i +0.6296 +0.0000i +0.4991 +0.0000i
X = U_T * A * V :
-0.2218 -0.0772i -0.0000 -0.0000i +0.0000 -0.0000i
-0.0000 +0.0000i +0.0267 -0.1394i -0.0000 +0.0000i
-0.0000 +0.0000i +0.0000 +0.0000i +0.0161 -0.0971i
Press return to continue.
cos(2*A) :
+8.9722e-01-4.3627e-02i +2.8356e-01+8.5780e-02i -2.5850e-01+6.2320e-02i
+2.7367e-01-1.3204e-01i -9.1861e-01+1.2088e-01i +1.6488e-01-1.6623e-01i
+1.1845e-01-5.8078e-02i +2.5822e-01+2.1304e-01i +9.2371e-01-1.6648e-02i
1 - 2 sinA**2:
-8.9722e-01+4.3627e-02i -2.8356e-01-8.5780e-02i +2.5850e-01-6.2320e-02i
-2.7367e-01+1.3204e-01i +9.1861e-01-1.2088e-01i -1.6488e-01+1.6623e-01i
-1.1845e-01+5.8078e-02i -2.5822e-01-2.1304e-01i -9.2371e-01+1.6648e-02i
Press return to continue
Press X return to stop