Mathc complexes/a92
Installer et compiler ces fichiers dans votre répertoire de travail.
c00d.c |
---|
/* ------------------------------------ */
/* Save as : c00d.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
#define FACTOR_E +1.E-2
#define RCA RC4
/* ------------------------------------ */
/* ------------------------------------ */
double f(
double x)
{
return(1.0/(x));
}
char feq[] = "1.0/(x)";
/* ------------------------------------ */
/* ------------------------------------ */
int main(void)
{
double a[RC4*(RC4*C2)] ={
+25072, +0, +21293, -4811, +5386, -6531, +11975, -5847,
+21293, +4811, +30848, +0, -1526, -1774, +13478, -6658,
+5386, +6531, -1526, +1774, +20007, +0, +7542, -1322,
+11975, +5847, +13478, +6658, +7542, +1322, +21250, +0 };
double **A = ca_A_mZ(a, i_mZ(RCA,RCA));
double **V = i_mZ(RCA,RCA);
double **cV_T = i_mZ(RCA,RCA);
double **T = i_mZ(RCA,RCA);
double **invEValue = i_mZ(RCA,RCA);
double **EigsValue = i_mZ(RCA,RCA);
double **InvA = i_mZ(RCA,RCA);
clrscrn();
printf(" A :");
p_mZ(A, S8,P0, S7,P0, C4);
/* V and cV_T*/
eigs_V_mZ(A,V,FACTOR_E);
ctranspose_mZ(V,cV_T);
/* EigsValue : cV_T * A * V */
mul_mZ(cV_T,A,T);
mul_mZ(T,V,EigsValue);
f_eigs_mZ(f,EigsValue,invEValue);
/* inv : V * inv(EigsValue) * cV_T*/
mul_mZ(V,invEValue,T);
mul_mZ(T,cV_T,InvA);
printf(" invA = V * inv(EigsValue) * cV_T");
pE_mZ(InvA, S12,P4, S12,P4, C3);
printf(" Ide = InvA * A");
mul_mZ(InvA,A,T);
p_mZ(T, S8,P4, S8,P4, C4);
stop();
f_mZ(A);
f_mZ(V);
f_mZ(cV_T);
f_mZ(T);
f_mZ(invEValue);
f_mZ(EigsValue);
f_mZ(InvA);
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Avec les matrices réelles nous avons calculer les vecteurs et valeurs propres des matrices symétriques. Avec les matrices complexes nous allons calculer les vecteurs et valeurs propres des matrices symétriques conjuguées.
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
Nous allons étudier une des propriétés des valeurs propres et des vecteurs propres :
invA = V * inv(EigsValue) * cV_T
Exemple de sortie écran :
A :
+25072 +0i +21293 -4811i +5386 -6531i +11975 -5847i
+21293 +4811i +30848 +0i -1526 -1774i +13478 -6658i
+5386 +6531i -1526 +1774i +20007 +0i +7542 -1322i
+11975 +5847i +13478 +6658i +7542 +1322i +21250 +0i
invA = V * inv(EigsValue) * cV_T
+2.4401e-04 -4.2021e-22i -1.6775e-04 +9.5627e-05i -7.7699e-05 +1.0843e-04i
-1.6775e-04 -9.5627e-05i +2.0965e-04 -1.3553e-20i +1.1807e-04 -4.3268e-05i
-7.7699e-05 -1.0843e-04i +1.1807e-04 +4.3268e-05i +1.3955e-04 +8.4703e-21i
-4.0241e-05 +8.9388e-05i -5.1345e-05 -9.6122e-05i -6.4355e-05 -5.7956e-05i
-4.0241e-05 -8.9388e-05i
-5.1345e-05 +9.6122e-05i
-6.4355e-05 +5.7956e-05i
+1.3427e-04 -2.3510e-38i
Ide = InvA * A
+1.0000 -0.0000i +0.0000 -0.0000i -0.0000 +0.0000i +0.0000 -0.0000i
+0.0000 +0.0000i +1.0000 -0.0000i +0.0000 +0.0000i +0.0000 +0.0000i
-0.0000 -0.0000i -0.0000 -0.0000i +1.0000 +0.0000i -0.0000 -0.0000i
-0.0000 -0.0000i -0.0000 +0.0000i -0.0000 -0.0000i +1.0000 +0.0000i
Press return to continue.