Mathc matrices/c11b3
Valeurs propres. Vecteurs propres
Installer et compiler ces fichiers dans votre répertoire de travail.
c0a3.c |
---|
/* ------------------------------------ */
/* Save as : c0a3.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
#define RCA C3
/* ------------------------------------ */
int main(void)
{
double a[RCA*RCA]={
+966,+98,+864,
+98,+692,+214,
+864,+214,+376
};
double **A = ca_A_mR(a,i_mR(RCA,RCA));
double **EigsVector = i_mR(RCA,RCA);
double **T_EigsVector = i_mR(RCA,RCA);
double **EigsValue = i_mR(RCA,C1);
double **T1 = i_mR(RCA,RCA);
double **T2 = i_mR(RCA,RCA);
clrscrn();
printf(" Copy/Past into the octave windows \n\n");
p_Octave_mR(A,"a",P0);
printf(" [V, E] = eigs (a,%d) \n\n",RCA);
stop();
clrscrn();
eigs_V_mR(A,EigsVector);
printf(" EignVector:");
p_mR(EigsVector,S10,P4,C6);
printf(" EigsValue : T_EigsVector * A * EigsVector");
transpose_mR(EigsVector,T_EigsVector);
mul_mR(T_EigsVector,A,T1);
mul_mR(T1,EigsVector,T2);
p_mR(T2,S10,P4,C6);
eigs_mR(A,EigsValue);
printf(" EigsValue :");
p_mR(EigsValue,S10,P4,C1);
stop();
f_mR(A);
f_mR(EigsVector);
f_mR(T_EigsVector);
f_mR(EigsValue);
f_mR(T1);
f_mR(T2);
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Dans cet exemple, je calcul les valeurs propres à partir des vecteurs propres ce qui me donne la matrice diagonal des valeurs propres, et j'utilise aussi la fonction eigs_mR(A,EigsValue); qui donne les valeurs propres dans un vecteur colonne. Exemple de sortie écran :
Copy/Past into the octave windows
a=[
+966,+98,+864;
+98,+692,+214;
+864,+214,+376]
[V, E] = eigs (a,3)
Press return to continue.
EignVector:
+0.7865 -0.2475 -0.5658
+0.2146 +0.9686 -0.1254
+0.5791 -0.0228 +0.8150
EigsValue : T_EigsVector * A * EigsVector
+1628.8358 +0.0000 -0.0000
+0.0000 +661.9311 +0.0000
-0.0000 -0.0000 -256.7669
EigsValue :
+1628.8358
+661.9311
-256.7669
Press return to continue.