Mathc complexes/a349
Apparence
Décomposition d'une matrice en éléments propres
Installer et compiler ces fichiers dans votre répertoire de travail.
c00b.c |
---|
/* ------------------------------------ */
/* save as : c00b.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define FACTOR_E +1.E-0
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int rc)
{
double **A = rEcsymmetric_mZ( i_mZ(rc,rc),99,1E-2);;
double **A_T = ctranspose_mZ(A, i_mZ(rc,rc));
double **U = X_U_mZ(A_T, i_mZ(rc,rc),FACTOR_E);
double **U_T = ctranspose_mZ(U, i_mZ(rc,rc));
double **U_TA = mul_mZ(U_T, A, i_mZ(rc,rc));
double **X = mul_mZ(U_TA, U, i_mZ(rc,rc));
double **LogX = f_eigs_mZ(log,X, i_mZ(rc,rc));
double **ULogX = mul_mZ(U,LogX, i_mZ(rc,rc));
double **LogA = mul_mZ(ULogX,U_T, i_mZ(rc,rc));
clrscrn();
printf(" A :");
p_mZ(A, S9,P4, S8,P4, C4);
printf(" U :");
p_mZ(U, S9,P4, S8,P4, C4);
printf(" X = U_T * A * U :");
p_mZ(X, S11,P3, S7,P3, C4);
stop();
clrscrn();
printf(" Copy/Past into the octave window. \n\n");
pE_Octave_mZ(A,"A",P4 ,P4);
printf(" logm(A)\n\n\n");
printf(" Log(A) = U Log(X) T_U :");
p_mZ(LogA, S10,P4, S9,P4, C4);
f_mZ(A);
f_mZ(A_T);
f_mZ(U);
f_mZ(U_T);
f_mZ(U_TA);
f_mZ(X);
f_mZ(LogX);
f_mZ(ULogX);
f_mZ(LogA);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(R3);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Exemple de sortie écran :
A :
+2.7366 +0.0000i -0.6200 +1.5474i -0.8494 -0.0108i
-0.6200 -1.5474i +2.0846 +0.0000i -0.8766 -0.0597i
-0.8494 +0.0108i -0.8766 +0.0597i +1.9804 +0.0000i
U :
-0.5050 -0.5371i -0.1101 +0.3710i +0.4831 -0.2711i
-0.3512 +0.4903i -0.2329 -0.3767i +0.5873 +0.3086i
+0.3048 -0.0000i +0.8088 +0.0000i +0.5029 -0.0000i
X = U_T * A * U :
+4.320 -0.000i +0.000 +0.000i +0.000 -0.000i
+0.000 -0.000i +2.371 +0.000i -0.000 +0.000i
-0.000 +0.000i -0.000 -0.000i +0.110 -0.000i
Press return to continue.
Copy/Past into the octave window.
A=[
+2.7366e+00+0.0000e+00*i,-6.2000e-01+1.5474e+00*i,-8.4940e-01-1.0800e-02*i;
-6.2000e-01-1.5474e+00*i,+2.0846e+00+0.0000e+00*i,-8.7660e-01-5.9700e-02*i;
-8.4940e-01+1.0800e-02*i,-8.7660e-01+5.9700e-02*i,+1.9804e+00+0.0000e+00*i]
logm(A)
Log(A) = U Log(X) T_U :
+0.2469 -0.0000i -0.6661 +1.2087i -0.8386 +0.3206i
-0.6661 -1.2087i -0.2707 +0.0000i -0.9715 -0.3871i
-0.8386 -0.3206i -0.9715 +0.3871i +0.1423 +0.0000i
Press return to continue
Press X return to stop