Mathc complexes/a97
Apparence
Installer et compiler ces fichiers dans votre répertoire de travail.
c00b.c |
|---|
/* ------------------------------------ */
/* Save as : c00b.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define RCA RC5
#define FACTOR_E +1.E-2
/* ------------------------------------ */
/* ------------------------------------ */
double f(
double x)
{
return(cos(2*x));
}
char feq[] = "cos(2*x)";
/* ------------------------------------ */
double g(
double x)
{
return(2*cos(x)*cos(x)-1);
}
char geq[] = "2*cos(x)**2-1";
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
{
double **A = rcsymmetric_mZ(i_mZ(RCA,RCA),99);
double **cos2_A = i_mZ(RCA,RCA);
double **coscosmns1_A = i_mZ(RCA,RCA);
double **EigsVector = i_mZ(RCA,RCA);
double **T_EigsVector = i_mZ(RCA,RCA);
double **EigsValue = i_mZ(RCA,RCA);
double **cos2A_EigsValue = i_mZ(RCA,RCA);
double **coscosmns1_EigsValue = i_mZ(RCA,RCA);
double **T1 = i_mZ(RCA,RCA);
clrscrn();
printf(" A :");
p_mZ(A, S7,P0, S7,P0, C6);
eigs_V_mZ(A,EigsVector,FACTOR_E);
ctranspose_mZ(EigsVector,T_EigsVector);
/* EigsValue = cV_T * A * V */
mul_mZ(T_EigsVector,A,T1);
mul_mZ(T1,EigsVector,EigsValue);
f_eigs_mZ(f,EigsValue,cos2A_EigsValue);
f_eigs_mZ(g,EigsValue,coscosmns1_EigsValue);
/*A == EigsVector * EigsValue * T_EigsVector */
mul_mZ(EigsVector,cos2A_EigsValue,T1);
mul_mZ(T1,T_EigsVector,cos2_A);
printf(" cos(2*A)");
p_mZ(cos2_A, S7,P3, S7,P3, C6);
//A == EigsVector * EigsValue * T_EigsVector
mul_mZ(EigsVector,coscosmns1_EigsValue,T1);
mul_mZ(T1,T_EigsVector,coscosmns1_A);
printf(" 2*cos(A)**2-1");
p_mZ(coscosmns1_A, S7,P3, S7,P3, C6);
f_mZ(A);
f_mZ(EigsVector);
f_mZ(T_EigsVector);
f_mZ(T1);
f_mZ(EigsValue);
f_mZ(cos2A_EigsValue);
f_mZ(coscosmns1_EigsValue);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun();
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Vérifions les égalités :
Nous savons 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
sin(x)**2 = 1-cos(x)**2
cos(2x) = cos(x)**2-(1-cos(x)**2)
cos(2x) = 2*cos(x)**2-1
Contrôle du facteur :
- FACTOR_E ..... +1.E-1 ......... -9 < x < 9
- FACTOR_E ..... +1.E-2 ....... -99 < x < 99
- FACTOR_E ..... +1.E-3 ..... -999 < x < 999
Exemple de sortie écran :
A :
+24470 +0i -788 -589i -20527 -6466i +4416 +18457i -9124 +4518i
-788 +589i +50751 +0i +16068 +10470i +1142 +3657i -24700 -14291i
-20527 +6466i +16068 -10470i +39657 +0i -16566 -28257i +3190 -12531i
+4416 -18457i +1142 -3657i -16566 +28257i +47113 +0i +3325 +21779i
-9124 -4518i -24700 +14291i +3190 +12531i +3325 -21779i +37792 +0i
cos(2*A)
+0.561 +0.000i +0.210 -0.270i -0.227 -0.079i -0.101 -0.322i +0.187 +0.010i
+0.210 +0.270i -0.487 +0.000i +0.203 -0.003i -0.316 +0.144i +0.419 +0.194i
-0.227 +0.079i +0.203 +0.003i -0.442 -0.000i -0.231 -0.045i +0.368 -0.269i
-0.101 +0.322i -0.316 -0.144i -0.231 +0.045i +0.381 +0.000i +0.136 -0.320i
+0.187 -0.010i +0.419 -0.194i +0.368 +0.269i +0.136 +0.320i +0.405 +0.000i
2*cos(A)**2-1
+0.561 -0.000i +0.210 -0.270i -0.227 -0.079i -0.101 -0.322i +0.187 +0.010i
+0.210 +0.270i -0.487 +0.000i +0.203 -0.003i -0.316 +0.144i +0.419 +0.194i
-0.227 +0.079i +0.203 +0.003i -0.442 -0.000i -0.231 -0.045i +0.368 -0.269i
-0.101 +0.322i -0.316 -0.144i -0.231 +0.045i +0.381 -0.000i +0.136 -0.320i
+0.187 -0.010i +0.419 -0.194i +0.368 +0.269i +0.136 +0.320i +0.405 +0.000i
Press return to continue
Press X to stop