Mathc complexes/a323
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-4
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int rc)
{
double **A = rcsymmetric_mZ( i_mZ(rc,rc),99);
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 **XC1 = c_D_U_mZ(X, i_mZ(rc,C1));
clrscrn();
printf(" Copy/Past into the octave windows \n\n\n");
p_Octave_mZ(A,"A",P0,P0);
printf(" EigenValues = eigs (A,%d) \n\n\n",rc);
printf(" A :");
p_mZ(A, S8,P0, S7,P0, C4);
stop();
clrscrn();
printf(" U :");
p_mZ(U, S10,P4, S8,P4, C4);
printf(" X = U_T * A * U :");
p_mZ(X, S11,P3, S7,P3, C4);
printf(" EigenValues :");
p_mZ(XC1, S12,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(XC1);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(R4);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Exemple de sortie écran :
Copy/Past into the octave windows
A=[
+16138+0*i,+2203-2143*i,-794+10878*i,+10430+2650*i;
+2203+2143*i,+25472+0*i,-9632-9839*i,-10103-2575*i;
-794-10878*i,-9632+9839*i,+25928+0*i,+15808-14423*i;
+10430-2650*i,-10103+2575*i,+15808+14423*i,+34542+0*i]
EigenValues = eigs (A,4)
A :
+16138 +0i +2203 -2143i -794 +10878i +10430 +2650i
+2203 +2143i +25472 +0i -9632 -9839i -10103 -2575i
-794 -10878i -9632 +9839i +25928 +0i +15808 -14423i
+10430 -2650i -10103 +2575i +15808 +14423i +34542 +0i
Press return to continue.
U :
+0.2126 +0.1566i +0.4637 -0.3074i -0.4170 -0.3233i -0.2144 +0.5445i
-0.3838 -0.0292i +0.6120 -0.4106i +0.1123 +0.4653i -0.0894 -0.2677i
+0.4231 -0.4098i -0.1249 +0.0324i -0.0005 +0.4229i -0.6735 +0.0628i
+0.6597 +0.0000i +0.3616 -0.0000i +0.5600 +0.0000i +0.3470 -0.0000i
X = U_T * A * U :
+63620.091 +0.000i +0.000 -0.000i +0.000 +0.000i +0.000 -0.000i
+0.000 +0.000i +24735.159 -0.000i +0.000 +0.000i +0.000 -0.000i
+0.000 -0.000i +0.000 -0.000i +10176.425 -0.000i -0.000 -0.000i
-0.000 +0.000i +0.000 +0.000i -0.000 +0.000i +3548.325 +0.000i
EigenValues :
+63620.0908 +0.0000i
+24735.1590 -0.0000i
+10176.4250 -0.0000i
+3548.3253 +0.0000i
Press return to continue
Press X return to stop