Exemple de sortie écran :
 Ab :
 +437 -943 +921 -443 +755 -102 
 -719 +240 -682 +376 +191 +706 
 +801 +624 +991 +423 +598 +768 
 +105 -864 -70 +841 -704 +871 
 A : i_mR(r,c);
 +437 -943 +921 -443 +755 
 -719 +240 -682 +376 +191 
 +801 +624 +991 +423 +598 
 +105 -864 -70 +841 -704 
 subA : i_mR(r,r); c_Ab_subArxr_mR(Ab,subA); 
 +437 -943 +921 -443 
 -719 +240 -682 +376 
 +801 +624 +991 +423 
 +105 -864 -70 +841 
 Press return to continue
 Press X to stop

Mémoire/Conditionnements
Mathc matrices/c12ed1
Application 
Installer ce fichier dans votre répertoire de travail.
/* Save as : c00a.c */
int main(void)
double **A = r_mR(i_mR(R5,C5),99);
 printf("A : without comma (p)"); 
 p_mR(A,S5,P0,C6);
 printf("A : with comma (P)"); 
 P_mR(A,S5,P0,C6);
 stop();
 f_mR(A);
 return 0;
/* ------------------------------------ */
 Afficher une matrice à introduire dans un fichier *.c : (virgules de séparation)

Exemple de sortie écran :
A : without comma (p)
 +29 -73 -24 +56 -70 
 -42 -6 +96 +43 +80 
 +99 -61 +27 -45 -92 
 +33 +55 -96 +74 +14 
 -52 -82 -78 +60 +30 
A : with comma (P)
 +29, -73, -24, +56, -70, 
 -42, -6, +96, +43, +80, 
 +99, -61, +27, -45, -92, 
 +33, +55, -96, +74, +14, 
 -52, -82, -78, +60, +30 
 Press return to continue.

Mathc matrices/c12ed2
Application 
Installer ce fichier dans votre répertoire de travail.
/* Save as : c00b.c */
int main(void)
double **A = rE_mR(i_mR(R5,C5),9999, 1E-2);
 printf("A : without comma (p)"); 
 pE_mR(A,S10,P2,C6);
 printf("A : with comma (P)"); 
 PE_mR(A,S10,P2,C6);
 stop();
 f_mR(A);
 return 0;
/* ------------------------------------ */
 Afficher une matrice à introduire dans un fichier *.c : (virgules de séparation)
 Exemple de sortie écran :
A : without comma (p)
 +9.83e+01 -9.64e+00 -3.59e+01 +7.38e+01 -6.31e+01 
 -4.89e+01 -7.04e+01 +2.27e+01 +7.07e+01 +9.58e+01 
 +8.71e+01 -2.04e+01 +9.43e+01 -7.38e+00 -8.61e+01 
 +4.09e+01 +5.60e+01 -1.00e+02 +7.40e+01 +7.84e+01 
 -9.36e+01 -3.79e+00 -4.63e+01 +8.67e+01 +3.30e+01 
A : with comma (P)
 +9.83e+01, -9.64e+00, -3.59e+01, +7.38e+01, -6.31e+01, 
 -4.89e+01, -7.04e+01, +2.27e+01, +7.07e+01, +9.58e+01, 
 +8.71e+01, -2.04e+01, +9.43e+01, -7.38e+00, -8.61e+01, 
 +4.09e+01, +5.60e+01, -1.00e+02, +7.40e+01, +7.84e+01, 
 -9.36e+01, -3.79e+00, -4.63e+01, +8.67e+01, +3.30e+01 
 Press return to continue.

Mathc matrices/c12ed3
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : cq8.c */
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
double **V = r_Q_mR( i_mR(RCV,RCV), 9);
double **v[RCV];
double **x = r_mR(i_mR(RCV,C1),9.);
int c;
/* ------------------------------------ */
 for(c=C0; c<csize_R(V); c++)
 v[c] = i_mR(RCV,C1); 
/* ------------------------------------ */ 
 clrscrn();
 printf(" V : orthonormal matrix");
 p_mR(V,S10,P4,C7);
 printf(" x : in the standard basis"); 
 p_mR(x,S10,P4,C6); 
 printf(" v[1] v[2] ... v[n]\n");
 p_mR(V,S10,P4,C7);
 printf(" Compute x in the V basis : \n\n"
 " x =");
 for(c=C0; c<csize_R(V); c++) 
 printf(" <x,v[%d]>*v[%d] + ",c,c);
 printf("\b\b \n\n");
 printf(" x ="); 
 for(c=C0; c<csize_R(V); c++) 
 printf(" %+.4f*v[%d]",dot_uv_R(x,v[c]),c); 
 printf("\n"); 
/* ------------------------------------ */
 for(c=C0; c<csize_R(V); c++)
 f_mR(v[c]); 
/* ------------------------------------ */
 f_mR(x); 
 f_mR(V);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun();
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Calculer x dans la base orthonormale V :
 x_V = [c0,c1,c2] 
 avec
 x = c0*v[0] + c1*v[1] + c2*v[2] 
 Remarque :
 x = c0*v[0] + c1*v[1] + c2 v[2]
 <x,v[0]> = <c0*v[0],v[0]> + <c1*v[1],v[0]> + <c2*v[2],v[0]> 
 <x,v[0]> = c0 * <v[0],v[0]> + c1 * <v[1],v[0]> + c2 * <v[2],v[0]> 
 <x,v[0]> = c0 * 1 + c1 * 0 + c2 * 0 
 <x,v[0]> = c0 
 <x,v[1]> = ...

Exemple de sortie écran :
 V : orthonormal matrix
 -0.5345 +0.5005 -0.6810 
 -0.2673 -0.8645 -0.4256 
 -0.8018 -0.0455 +0.5959 
 x : in the standard basis
 +3.0000 
 +3.0000 
 -3.0000 
 v[1] v[2] ... v[n]
 -0.5345 +0.5005 -0.6810 
 -0.2673 -0.8645 -0.4256 
 -0.8018 -0.0455 +0.5959 
 Compute x in the V basis : 
 x = <x,v[0]>*v[0] + <x,v[1]>*v[1] + <x,v[2]>*v[2] 
 x = +0.0000*v[0] -0.9555*v[1] -5.1075*v[2]
 Press return to continue
 Press X to stop

Mathc matrices/c12ed4
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : cq9.c */
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
double **V = r_q_mR( i_mR(RCV,RCV), 9);
double **v[RCV];
double **x = r_mR(i_mR(RCV,C1),9.);
int c;
/* ------------------------------------ */
 for(c=C0; c<csize_R(V); c++)
 v[c] = i_mR(RCV,C1); 
/* ------------------------------------ */ 
 clrscrn();
 printf(" V : orthogonal matrix");
 p_mR(V,S10,P4,C7);
 printf(" x : in the standard basis"); 
 p_mR(x,S10,P4,C6); 
 printf(" v[1] v[2] ... v[n]\n");
 p_mR(V,S10,P4,C7);
 stop();
 clrscrn(); 
 printf(" Compute x in the V basis : \n\n"
 " x =\n");
 for(c=C0; c<csize_R(V); c++) 
 printf(" + [<x,v[%d]> / ||v[%d]||**2] * v[%d] \n",c,c,c);
 printf("\n\n");
 printf(" x ="); 
 for(c=C0; c<csize_R(V); c++) 
 printf(" %+.4f*v[%d]",dot_uv_R(x,v[c]) / dot_uv_R(v[c],v[c]),c); 
 printf("\n"); 
/* ------------------------------------ */
 for(c=C0; c<csize_R(V); c++)
 f_mR(v[c]); 
/* ------------------------------------ */
 f_mR(x); 
 f_mR(V);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun();
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Calculer x dans la base orthogonale V :
 x_V = [c0,c1,c2] 
 avec
 x = c0*v[0] + c1*v[1] + c2*v[2] 
 Remarque :
 x = c0*v[0] + 
 c1*v[1] + 
 c2 v[2]
 <x,v[0]> / ||v[0]||**2] = <c0*v[0],v[0]> / ||v[0]||**2] + 
 <c1*v[1],v[0]> / ||v[0]||**2] + 
 <c2*v[2],v[0]> / ||v[0]||**2] 
 <x,v[0]> / ||v[0]||**2] = c0 * <v[0],v[0]>/||v[0]||**2] + 
 c1 * <v[1],v[0]>/||v[0]||**2] + 
 c2 * <v[2],v[0]>/||v[0]||**2] 
 <x,v[0]> / ||v[0]||**2] = c0 * 1 + 
 c1 * 0 + 
 c2 * 0 
 <x,v[0]> / ||v[0]||**2] = c0 
 <x,v[1]> = ...

Exemple de sortie écran :
 V : orthogonal matrix
 -5.0000 +4.5455 +0.6268 
 +7.0000 +0.0364 +1.1090 
 -6.0000 -3.7455 +0.7715 
 x : in the standard basis
 +5.0000 
 +2.0000 
 +2.0000 
 v[1] v[2] ... v[n]
 -5.0000 +4.5455 +0.6268 
 +7.0000 +0.0364 +1.1090 
 -6.0000 -3.7455 +0.7715 
 Press return to continue. 
 --------------------------------
 Compute x in the V basis : 
 x =
 + [<x,v[0]> / ||v[0]||**2] * v[0] 
 + [<x,v[1]> / ||v[1]||**2] * v[1] 
 + [<x,v[2]> / ||v[2]||**2] * v[2] 
 x = -0.2091*v[0] +0.4413*v[1] +3.1087*v[2]
 Press return to continue
 Press X to stop

Mathc matrices/h11c
Bibliothèque
Installer ce fichier dans votre répertoire de travail.
/* Save as : vdbm.h */
/* ------------------------------------ */
double **MmnsD_mR(
double **M,
double **D,
double **MmnsD
int r;
int c;
 dif_sizes_mR(M,D, "MmnsD_mR();","(M or D)");
 dif_sizes_mR(M,MmnsD,"MmnsD_mR();","(MmnsD) ");
 for ( r=R1; r<M[R_SIZE][C0]; r++)
 for ( c=C1; c<M[C_SIZE][C0]; c++)
 if(r==c)
 MmnsD[r][c] = M[r][c] - D[r][c];
 else
 MmnsD[r][c] = M[r][c];
 return(MmnsD);
/* ------------------------------------ */
double **DmnsM_mR(
double **D,
double **M,
double **DmnsM
int r;
int c;
 dif_sizes_mR(M,D, "DmnsM_mR();","(M or D)");
 dif_sizes_mR(M,DmnsM,"DmnsM_mR();","(MmnsD) ");
 for ( r=R1; r<M[R_SIZE][C0]; r++)
 for ( c=C1; c<M[C_SIZE][C0]; c++)
 if(r==c)
 DmnsM[r][c] = D[r][c]- M[r][c];
 else
 DmnsM[r][c] = - M[r][c];
 return(DmnsM);
/* ------------------------------------ */
double **f_eigs_uv_mR(
double (*P_f)(double x),
double **M,
double **fM
int r;
 dif_sizes_mR(M,fM,"eigs_f_uv_mR();","(M or fM");
 for ( r=R1; r<M[R_SIZE][C0]; r++)
 fM[r][r] = (*P_f)(M[r][r]);

return(fM);
/* ------------------------------------ */
 Déclaration des fichiers h.

Photographie/Fabricants/Royer/Savoy 3F
Mémoire/L'évolution de la mémoire avec l'âge