Mathc matrices/c22s
Apparence
Installer et compiler ces fichiers dans votre répertoire de travail.
c00k.c |
---|
/* ------------------------------------ */
/* Save as : c00k.c */
/* ------------------------------------ */
#include "v_a.h"
#include "dot_au.h"
/* ------------------------------------ */
void fun(int r)
{
double **T = r_mR(i_mR(r,r),9.);
double **A = i_mR(r,r);
double **U = rsymmetric_mR(i_mR(r,r),9.);
double **EigsValue = i_mR(r,C1);
clrscrn();
r_Q_mR(T,A);
printf(" A : If A is an orthonormal matrix\n");
printf(" A_t*A = ID \n");
p_mR(A,S5,P3,C6);
printf(" U :");
p_mR(U,S5,P3,C6);
eigs_value_Au_mR(A,U,EigsValue);
printf(" EigsValue 1: <u,v> = v^t (A^t*A) u");
p_mR(EigsValue,S13,P4,C1);
f_mR(A);
f_mR(U);
f_mR(EigsValue);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(rp_I(R3)+R1);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Nous calculons les valeurs propres du vecteur u.
A est une matrice orthnormale. Donc A_t*A égal la matrice identitée.
On se retrouve donc avec le produit scalaire standard.
Avec une matrice aléatoire cela ne fonctionne pas. Il faut trouver un autre algorithme.
Exemple de sortie écran :
------------------------------------
A : If A is an orthonormal matrix
A_t*A = ID
+0.190 +0.614 +0.026 +0.766
-0.664 +0.599 -0.328 -0.304
-0.664 -0.225 +0.635 +0.324
-0.285 -0.463 -0.699 +0.465
U :
-7.000 +2.000 -5.000 -3.000
+2.000 -1.000 -5.000 -7.000
-5.000 -5.000 +6.000 -9.000
-3.000 -7.000 -9.000 +4.000
EigsValue 1: <u,v> = v^t (A^t*A) u
+14.23599
-13.10550
+7.95822
-7.08869
Press return to continue
Press X to stop