Mathc complexes/a70
Apparence
Installer et compiler ces fichiers dans votre répertoire de travail.
c00c.c |
|---|
/* ------------------------------------ */
/* Save as: c00c.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define FACTOR_E +1.E-1
#define ARRAY A3
/* ------------------------------------ */
#define RC RC3
/* ------------------------------------ */
void fun(void)
{
double **A = rcsymmetric_mZ( i_mZ(RC,RC),99);
double **AEVect = eigs_V_mZ(A, i_mZ(RC,RC),FACTOR_E);
double **InvAEVect = ctranspose_mZ(AEVect, i_mZ(RC,RC));
double **AEValue = eigs_mZ(A, i_mZ(RC,C1));
double **T = i_mZ(RC,RC);
double **a = i_mZ(RC,RC);
double **b [ARRAY];
double **r [ARRAY];
double **br [ARRAY];
double **EVabr[ARRAY];
int i;
for(i=A0; i<ARRAY; i++)
{
b[i] = c_c_mZ( AEVect,i+C1, i_mZ(RC,C1),C1);
r[i] = c_r_mZ(InvAEVect,i+R1, i_mZ(R1,RC),R1);
br[i] = mul_mZ(b[i],r[i], i_mZ(RC,RC));
EVabr[i] = smul_mZ(AEValue[i+R1][C1], br[i], i_mZ(RC,RC));
}
clrscrn();
printf(" A:");
p_mZ(A, S7,P0,S6,P0,C7);
printf(" eigenvectors of A");
p_mZ(AEVect, S5,P4,S5,P4,C7);
printf(" eigenvalues of A");
p_mZ(AEValue, S7,P0,S6,P0,C7);
stop();
clrscrn();
printf(" A:");
p_mZ(A, S7,P0,S6,P0,C7);
add_mZ(EVabr[0], EVabr[1], T);
add_mZ( T, EVabr[2], a);
printf(" E1*b1r1 + E2*b2r2 + E3*b3r3 = A");
p_mZ(a, S7,P0,S6,P0,C7);
f_mZ(A);
f_mZ(AEVect);
f_mZ(InvAEVect);
f_mZ(AEValue);
f_mZ(T);
for(i=A0; i<ARRAY; i++)
{
f_mZ( b[i]);
f_mZ( r[i]);
f_mZ( br[i]);
f_mZ(EVabr[i]);
}
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun();
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Nous voyons une des propriètés de la décomposition spectral: E1*b1r1 + E2*b2r2 + E3*b3r3 = A E1 est la première valeur propre, E2 la deuxième et E3 la troisième. b1r1 est obtenue en multipliant la première colonne de la matrice des vecteurs propres par la première ligne de la matrice inverse des vecteurs propres.
Exemple de sortie écran :
A:
+19218 +0i +1937 +7205i +9904 -7978i
+1937 -7205i +17235 +0i -6748-11688i
+9904 +7978i -6748+11688i +14116 +0i
eigenvectors of A
+0.4422-0.3775i -0.2778+0.6799i -0.2921+0.1929i
-0.2654-0.4909i -0.5806-0.3363i +0.2706+0.4065i
+0.5921+0.0000i +0.1020-0.0000i +0.7994+0.0000i
eigenvalues of A
+39314 -0i
+10910 -0i
+345 +0i
Press return to continue.
A:
+19218 +0i +1937 +7205i +9904 -7978i
+1937 -7205i +17235 +0i -6748-11688i
+9904 +7978i -6748+11688i +14116 +0i
E1*b1r1 + E2*b2r2 + E3*b3r3 = A
+19218 +0i +1937 +7205i +9904 -7978i
+1937 -7205i +17235 +0i -6748-11688i
+9904 +7978i -6748+11688i +14116 +0i
Press return to continue
Press X return to stop