Exemple de sortie écran :
 In the Standard basis
 T(x) = A*x
-128 
 +59 
 +64 
-120 
 In the the B basis with D = invB*A*B
 [T(x)]_B = D*x_B
-1863 
+1765 
-783 
+483 
 Verify the result if it is the same in the two basis :
 With B*[x_B] = [x] then B*[D*x_B] = [A*x]
 B*[D*x_B]
-128 
 +59 
 +64 
-120 
 Press return to continue.

Mathc matrices/c24x
Bibliothèque
Installer ce fichier dans votre répertoire de travail.
/* Save as : vrms.h */
void rs_mR(
double **A[],
int S,
int n
int s;
int r;
int c;
 for(s=C0; s<S; s++)
 for(r=R1; r<A[s][R_SIZE][C0]; r++)
 for(c=C1; c<A[s][C_SIZE][C0]; c++)
 A[s][r][c] = r_I(n);
/* ------------------------------------ */
Initialiser un tableau de S matrices.

Mathc matrices/c24y
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c01a.c */
void AplsB(int r,int c)
double **A[3];
 A[0] = i_mR(r,c);
 A[1] = i_mR(r,c);
 A[2] = i_mR(r,c);
 r_mR(A[0],9); 
 r_mR(A[1],9); 
 clrscrn();
 printf(" A0 : ");
 p_mR(A[0],5,0,6); 
 printf(" A1 : ");
 p_mR(A[1],5,0,6); 
 add_mR(A[0],A[1],A[2]);
 printf(" A0plsA1 : ");
 p_mR(A[2],5,0,6);
 f_mR(A[0]);
 f_mR(A[1]);
 f_mR(A[2]);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
 do{
 AplsB(rp_I(R5),rp_I(C5));
 }while(stop_w());
 return 0;
/* ------------------------------------ */

Créer un tableau de matrices :
double **A[3];
 A[0] = i_mR(r,c);
 A[1] = i_mR(r,c);
 A[2] = i_mR(r,c);
 Exemple de sortie écran :
 A0 : 
 +5 +3 +9 +1 
 +1 -9 +6 -7 
 +5 +3 -5 +1 
 +7 +6 -9 -8 
 -7 +5 -2 +5 
 A1 : 
 +3 -6 -1 -9 
 +7 +6 -7 +2 
 -2 +1 +4 +2 
 -4 -3 -6 -2 
 +5 -2 +7 -5 
 A0plsA1 : 
 +8 -3 +8 -8 
 +8 -3 -1 -5 
 +3 +4 -1 +3 
 +3 +3 -15 -10 
 -2 +3 +5 +0 
 Press return to continue
 Press X to stop

Mathc matrices/c24z
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c01b.c */
void AplsB(int r,int c)
double **A[3];
 A[0] = r_mR(i_mR(r,c),9);
 A[1] = r_mR(i_mR(r,c),9);;
 A[2] = i_mR(r,c);
 clrscrn();
 printf(" A0 : ");
 p_mR(A[0],5,0,6); 
 printf(" A1 : ");
 p_mR(A[1],5,0,6); 
 printf(" A0plsA1 : ");
 p_mR(add_mR(A[0],A[1],A[2]),5,0,6);
 f_mR(A[0]);
 f_mR(A[1]);
 f_mR(A[2]);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
 do{
 AplsB(rp_I(R5),rp_I(C5));
 }while(stop_w());
 return 0;
/* ------------------------------------ */
 Initialiser les matrices lors de leurs créations.
 A[0] = r_mR(i_mR(r,c),9);
 Exemple de sortie écran :
 A0 : 
 +5 +3 +9 +1 
 +1 -9 +6 -7 
 +5 +3 -5 +1 
 +7 +6 -9 -8 
 -7 +5 -2 +5 
 A1 : 
 +3 -6 -1 -9 
 +7 +6 -7 +2 
 -2 +1 +4 +2 
 -4 -3 -6 -2 
 +5 -2 +7 -5 
 A0plsA1 : 
 +8 -3 +8 -8 
 +8 -3 -1 -5 
 +3 +4 -1 +3 
 +3 +3 -15 -10 
 -2 +3 +5 +0 
 Press return to continue
 Press X to stop

Mathc matrices/c25a
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c02a.c */
void AplsB(int r,int c)
double **A[3];
 A[0] = i_mR(r,c);
 A[1] = i_mR(r,c);
 A[2] = i_mR(r,c);
 rs_mR(A,3,9);
 clrscrn();
 printf(" A0 : ");
 p_mR(A[0],5,0,6); 
 printf(" A1 : ");
 p_mR(A[1],5,0,6); 
 printf(" A0plsA1 : ");
 p_mR(add_mR(A[0],A[1],A[2]),5,0,6);
 f_mR(A[0]);
 f_mR(A[1]);
 f_mR(A[2]);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
 do{
 AplsB(rp_I(R5),rp_I(C5));
 }while(stop_w());
 return 0;
/* ------------------------------------ */
 Initialiser les matrices avec la fonction : 
rs_mR(A,3,9);
 Exemple de sortie écran :
 A0 : 
 +5 +3 +9 +1 
 +1 -9 +6 -7 
 +5 +3 -5 +1 
 +7 +6 -9 -8 
 -7 +5 -2 +5 
 A1 : 
 +3 -6 -1 -9 
 +7 +6 -7 +2 
 -2 +1 +4 +2 
 -4 -3 -6 -2 
 +5 -2 +7 -5 
 A0plsA1 : 
 +8 -3 +8 -8 
 +8 -3 -1 -5 
 +3 +4 -1 +3 
 +3 +3 -15 -10 
 -2 +3 +5 +0 
 Press return to continue
 Press X to stop

Photographie/Fabricants/Lumière/Lumière Fidor 6.3

Liens.
Liste des folding Lumière<br>Les appareils Lumière par ordre chronologique<br>Les folding Lumière 6x9

Mathc matrices/c25b
Application
 Les exemples *a.c travaillent sur des matrices aléatoires. 
 Les exemples *b.c travaillent sur des matrices à modifier.
 Les bases orthonormales :
Exemples d'applications :
 Calculer x dans la base orthonormale B :
Exemples d'applications :
 Calculer la matrice de projection de x sur Rn :
Exemples d'applications :
 Les matrices orthonormales conservent les longueurs :
Exemples d'applications :
 Les matrices orthonormales conservent les angles :
Exemples d'applications :
 Si Q est une matrice orthonormale alors : Qu. Qv = u.v :
Exemples d'applications :
 Calculer x dans la base * :

Mathc matrices/c25c
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c01a.c */
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
double **Q = r_Q_mR(i_mR(RCQ,RCQ), 9);
double **u[RCQ];
int c,c2;
/* ------------------------------------ */
 for(c=C0; c<csize_R(Q); c++)
 u[c] = i_mR(RCQ,C1); 
/* ------------------------------------ */
 clrscrn();
 printf(" Orthonormal bases :\n\n");
 for(c=C0; c<csize_R(Q); c++)
 printf(" u[%d] :",c); 
 p_mR(u[c],S5,P4,C6); 
 stop();
/* ------------------------------------ */ 
 clrscrn();
 printf(" <u,u> = ||u||^2\n"
 " (<u,u>)^(1/2) = ||u|| \n\n");
 for(c=C0; c<csize_R(Q); c++)
 printf(" ||u[%d]|| = %.4f :\n",c,norm_uv_R(u[c]));

printf(" \n\n\n"
 " <u,v> = v^t u\n\n");
 for(c=C0; c<csize_R(Q); c++) 
 for(c2=C0; c2<csize_R(Q); c2++) 
 if(c!=c2) 
 printf(" <u[%d],u[%d]> = %+.4f\n",c,c2, dot_uv_R(u[c],u[c2]));
/* ------------------------------------ */
 for(c=C0; c<csize_R(Q); c++)
 f_mR(u[c]); 
 f_mR(Q);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun();
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Vérifions les propriétés d'une matrice orthonomale.
 Pour changer la taille des vecteurs il suffit de modifier la valeur de :

#define RCQ RC4
 Exemple de sortie écran :
 Orthonormal bases :
 u[0] :
-0.6937 
+0.6070 
-0.1734 
-0.3468 
 u[1] :
-0.2404 
+0.1778 
-0.2550 
+0.9195 
 u[2] :
-0.0995 
+0.2611 
+0.9422 
+0.1848 
 u[3] :
+0.6717 
+0.7292 
-0.1308 
-0.0017 
 Press return to continue. 
 --------------------------------
 <u,u> = ||u||^2
 (<u,u>)^(1/2) = ||u|| 
 ||u[0]|| = 1.0000 :
 ||u[1]|| = 1.0000 :
 ||u[2]|| = 1.0000 :
 ||u[3]|| = 1.0000 :
 <u,v> = v^t u
 <u[0],u[1]> = +0.0000
 <u[0],u[2]> = +0.0000
 <u[0],u[3]> = +0.0000
 <u[1],u[0]> = +0.0000
 <u[1],u[2]> = +0.0000
 <u[1],u[3]> = +0.0000
 <u[2],u[0]> = +0.0000
 <u[2],u[1]> = +0.0000
 <u[2],u[3]> = -0.0000
 <u[3],u[0]> = +0.0000
 <u[3],u[1]> = +0.0000
 <u[3],u[2]> = -0.0000
 Press return to continue
 Press X to stop