Mathc matrices/c29a0
Installer et compiler ces fichiers dans votre répertoire de travail.
c00.c |
---|
/* ------------------------------------ */ /* ---------------------------------- */
/* Save as : c00.c */ /* */
/* ------------------------------------ */ /* New version of : eigs_V_mR(); */
#include "v_a.h" /* */
/* ------------------------------------ */ /* ---------------------------------- */
void fun(int r)
{
double **A = rsymmetric_mR( i_mR(r,r),999.);
double **EigsVector = eigs_V_mR(A, i_mR(r,r));
double **EigsVector_T = transpose_mR(EigsVector, i_mR(r,r));
double **EigsValue = eigs_mR(A, i_mR(r,C1));
clrscrn();
printf(" Copy/Past into the octave windows \n\n");
p_Octave_mR(A,"a", P0);
printf(" [V, E] = eigs (a,%d) \n\n",r);
printf(" EigsVector:");
p_mR(EigsVector, S5, P6, C6);
printf(" EigsValue :");
p_mR(EigsValue, S13, P6, C1);
stop();
clrscrn();
printf(" Inverse of EigsVector = EigsVector_T\n");
pE_mR(EigsVector_T, S12, P4, C6);
printf(" Copy/Past into the octave windows \n\n");
p_Octave_mR(EigsVector, "EigsVector", P6);
printf(" format short e \n");
printf(" inv(EigsVector) \n");
f_mR(A);
f_mR(EigsVector);
f_mR(EigsVector_T);
f_mR(EigsValue);
}
/* ------------------------------------ */
int main(void)
{
do
{
fun(R3);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Nous allons calculer la décomposition spectral de la matrice A. Nous aurons besoin des vecteurs propres et des valeurs propres de la matrice A, ainsi que de la matrice inverse de la matrice des vecteurs propres.
Notre matrice des vecteurs propres étant une matrice orthonormale, nous prendrons simplement sa transposé pour inverse.
Remarque : J'ai modifier la fonction eigs_V_mR(); dans la bibliothèque
Exemple de sortie écran :
------------------------------------
Copy/Past into the octave windows
a=[
-479,-269,+992;
-269,-501,+904;
+992,+904,-763]
[V, E] = eigs (a,3)
EigsVector:
-0.512981 +0.544352 -0.663726
-0.485715 +0.453457 +0.747300
+0.707765 +0.705732 +0.031785
EigsValue :
-2102.375181
+583.009012
-223.633832
Press return to continue.
Inverse of EigsVector = EigsVector_T
-5.1298e-01 -4.8571e-01 +7.0777e-01
+5.4435e-01 +4.5346e-01 +7.0573e-01
-6.6373e-01 +7.4730e-01 +3.1785e-02
Copy/Past into the octave windows
EigsVector=[
-0.512981,+0.544352,-0.663726;
-0.485715,+0.453457,+0.747300;
+0.707765,+0.705732,+0.031785]
format short e
inv(EigsVector)
Press return to continue
Press X to stop