Mathc matrices/c30c
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c1c.c */
int main(void)
double a[R3*C4]={
1, 3, 3, 1,
2, 8, 1, -6,
1, 4, -6, 9,
double **A = ca_A_mR(a,i_mR(R3,C4));
int i = 1;
/* 1----------------------------------- 
 +1.000 +3.000 +3.000 +1.000
 +2.000 +8.000 +1.000 -6.000
 +1.000 +4.000 -6.000 +9.000
 clrscrn();
 printf(" (%d) \n\n",i++);
 p_mR(A,S11,P2,C6);
 printf(" R2 = -2*R1 + R2 \n");addR_mR(A, -2,R1,R2); 
 printf(" R3 = -1*R1 + R3 \n");addR_mR(A, -1,R1,R3); 
 p_mR(A,S11,P2,C6);
 getchar();
/* 2----------------------------------- 
 +1.000 +3.000 +3.000 +1.000
 +0.000 +2.000 -5.000 -8.000
 +0.000 +1.000 -9.000 +8.000
 clrscrn();
 printf(" (%d) \n\n",i++);
 p_mR(A,S11,P2,C6);
 printf(" R3 = 2*R3 \n"); mulR_mR(A, 2.,R3); 
 printf(" R3 = -1*R2 + R3 \n");addR_mR(A,-1.,R2,R3); 
 p_mR(A,S11,P2,C6);
 getchar();
/* 3----------------------------------- 
 +1.000 +3.000 +3.000 +1.000
 +0.000 +2.000 -5.000 -8.000
 +0.000 +0.000 -13.000 +24.000
 clrscrn();
 printf(" (%d) \n\n",i++);
 p_mR(A,S11,P2,C6);
 printf(" R1 = 13.*R1 \n"); mulR_mR(A, 13.,R1); 
 printf(" R2 = 13.*R2 \n"); mulR_mR(A, 13.,R2); 
 printf(" R3 = -1. *R3 \n"); mulR_mR(A, -1.,R3 ); 
 printf(" R1 = -3*R3 + R1 \n");addR_mR(A, -3.,R3,R1); 
 printf(" R2 = +5*R3 + R2 \n");addR_mR(A, +5.,R3,R2); 
 p_mR(A,S11,P2,C6);
 getchar();
/* 4----------------------------------- 
 +13.000 +39.000 +0.000 +85.000
 +0.000 +26.000 +0.000 -224.000
 +0.000 +0.000 +13.000 -24.000
 clrscrn();
 printf(" (%d) \n\n",i++);
 p_mR(A,S11,P2,C6);
 printf(" R2 = 1./2.*R2 \n");mulR_mR(A,1./2.,R2); 
 p_mR(A,S11,P2,C6);
 getchar();
/* 5----------------------------------- 
 +13.000 +39.000 +0.000 +85.000
 +0.000 +13.000 +0.000 -112.000
 +0.000 +0.000 +13.000 -24.000
 clrscrn();
 printf(" (%d) \n\n",i++);
 p_mR(A,S11,P2,C6);
 printf(" R1 = -3 *R2 + R1 (3*13 = 39)\n");addR_mR(A, -3.,R2,R1); 
 p_mR(A,S11,P2,C6);
 getchar();
 f_mR(A);
 getchar();
 return 0;
/* ------------------------------------ */
 Exemple de sortie écran :
 (1) 
 +1.00 +3.00 +3.00 +1.00 
 +2.00 +8.00 +1.00 -6.00 
 +1.00 +4.00 -6.00 +9.00 
 R2 = -2*R1 + R2 
 R3 = -1*R1 + R3 
 +1.00 +3.00 +3.00 +1.00 
 +0.00 +2.00 -5.00 -8.00 
 +0.00 +1.00 -9.00 +8.00 
 ------------------------------------ 
 (2) 
 +1.00 +3.00 +3.00 +1.00 
 +0.00 +2.00 -5.00 -8.00 
 +0.00 +1.00 -9.00 +8.00 
 R3 = 2*R3 
 R3 = -1*R2 + R3 
 +1.00 +3.00 +3.00 +1.00 
 +0.00 +2.00 -5.00 -8.00 
 +0.00 +0.00 -13.00 +24.00 
 (3) 
 +1.00 +3.00 +3.00 +1.00 
 +0.00 +2.00 -5.00 -8.00 
 +0.00 +0.00 -13.00 +24.00 
 R1 = 13.*R1 
 R2 = 13.*R2 
 R3 = -1. *R3 
 R1 = -3*R3 + R1 
 R2 = +5*R3 + R2 
 +13.00 +39.00 +0.00 +85.00 
 +0.00 +26.00 +0.00 -224.00 
 -0.00 -0.00 +13.00 -24.00 
 (4) 
 +13.00 +39.00 +0.00 +85.00 
 +0.00 +26.00 +0.00 -224.00 
 -0.00 -0.00 +13.00 -24.00 
 R2 = 1./2.*R2 
 +13.00 +39.00 +0.00 +85.00 
 +0.00 +13.00 +0.00 -112.00 
 -0.00 -0.00 +13.00 -24.00 
 ------------------------------------ 
 (5) 
 +13.00 +39.00 +0.00 +85.00 
 +0.00 +13.00 +0.00 -112.00 
 -0.00 -0.00 +13.00 -24.00 
 R1 = -3 *R2 + R1 (3*13 = 39)
 +13.00 +0.00 +0.00 +421.00 
 +0.00 +13.00 +0.00 -112.00 
 -0.00 -0.00 +13.00 -24.00

Mathc matrices/a31
Application
Matrices triangulaires inférieures :
Matrices triangulaires supérieures :

Mathc matrices/c31a
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c03a.c */
int main(void)
double a[9]={
 3., 0., 0.,
 3., 1., 0.,
 3., -2., 1. }; 
double inva[9]={
 1./3.,0., 0.,
 -1., 1., 0.,
 -3., 2., 1. };
double **A = ca_A_mR(a, i_mR(R3,C3));
double **invA = ca_A_mR(inva,i_mR(R3,C3));
double **AinvA = i_mR(R3,C3);
 printf(" A : ");
 p_mR(A,S5,P0,C6);
 printf(" invA : ");
 p_mR(invA,S5,P3,C6);
 printf(" A*invA : ");
 p_mR(mul_mR(A,invA,AinvA),S5,P3,C6);
 stop();
 f_mR(A);
 f_mR(invA);
 f_mR(AinvA);
 return 0;
/* ------------------------------------ */
Il faut jouer le jeu pour comprendre ce travail. Copier le système de matrice et remplacer au fur et à mesure les lettres par leurs valeurs.
Le fichier c permet simplement de vérifier le résultat.
 La méthode de calcul :
 a) Ecrire sur un papier au crayon ce système de matrices

3 0 0 a 0 0 1 0 0 
 3 1 0 * b c 0 = 0 1 0 
 3 -2 1 d e f 0 0 1 
 « Remplacer chaque lettre aux fur et à mesure. »
 b) Inverser les coefficients de la diagonale :
 -> a= 1/3 
 -> c= 1 
 -> f= 1
 c) Calculer le produit scalaire des r* lignes par les c* colonnes :
 1) r2*c1 => 1 + b = 0 => b = -1

3 0 0 1/3 0 0 1 0 0 
 3 1 0 * b 1 0 = 0 1 0 
 3 -2 1 d e 1 0 0 1

r3*c1 => 1 + 2 + d = 0 => d = -3 
 3 0 0 1/3 0 0 1 0 0 
 3 1 0 * -1 1 0 = 0 1 0 
 3 -2 1 d e 1 0 0 1

r3*c2 => - 2 + e = 0 => e = 2
 3 0 0 1/3 0 0 1 0 0 
 3 1 0 * -1 1 0 = 0 1 0 
 3 -2 1 -3 e 1 0 0 1

d) Le résultat :
 3 0 0 1/3 0 0 1 0 0 
 3 1 0 * -1 1 0 = 0 1 0 
 3 -2 1 -3 2 1 0 0 1

Mathc matrices/c31b
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c04a.c */
int main(void)
double a[16]={
 -2., 0., 0., 0., 
 -6., 1., 0., 0.,
 3., 1., 1., 0.,
 0., -4., -2., 7.
double inva[16]={
 -1./2., 0., 0., 0.,
 -3., 1., 0., 0.,
 9./2., -1., 1., 0., 
 -3./7., 2./7., 2./7., 1./7. };
double **A = ca_A_mR(a, i_mR(R4,C4));
double **invA = ca_A_mR(inva,i_mR(R4,C4));
double **AinvA = i_mR(R4,C4);
 printf(" A : ");
 p_mR(A,S5,P0,C6);
 printf(" invA : ");
 p_mR(invA,S5,P3,C6);
 printf(" A*invA : ");
 p_mR(mul_mR(A,invA,AinvA),S5,P3,C6);
 stop();
 f_mR(A);
 f_mR(invA);
 f_mR(AinvA);
 return 0;
/* ------------------------------------ */
Il faut jouer le jeu pour comprendre ce travail. Copier le système de matrice et remplacer au fur et à mesure les lettres par leurs valeurs.
Le fichier c permet simplement de vérifier le résultat.
 La méthode de calcul :

a) Ecrire sur un papier au crayon ce système de matrices

-2 0 0 0 a 0 0 0 1 0 0 0
 -6 1 0 0 * b c 0 0 = 0 1 0 0
 3 1 1 0 d e f 0 0 0 1 0
 0 -4 -2 7 g h i j 0 0 0 1
 « Remplacer chaque lettre aux fur et à mesure. »
 b) Inverser les coefficients de la diagonale :
 -2 -> a= -1/2
 1 -> c= 1
 1 -> f= 1
 7 -> j= 1/7
 c) Calculer le produit scalaire des r* lignes par les c* colonnes :
 1) r2*c1 => 3 + b = 0 => b = -3

-2 0 0 0 -1/2 0 0 0 1 0 0 0
 -6 1 0 0 * b 1 0 0 = 0 1 0 0
 3 1 1 0 d e 1 0 0 0 1 0
 0 -4 -2 7 g h i 1/7 0 0 0 1

2) r3*c1 => -3/2 - 3 + d = 0 => d = 9/2

-2 0 0 0 -1/2 0 0 0 1 0 0 0
 -6 1 0 0 * -3 1 0 0 = 0 1 0 0
 3 1 1 0 d e 1 0 0 0 1 0
 0 -4 -2 7 g h i 1/7 0 0 0 1

3) r4*c1 => 12 - 9 + 7g = 0 => g = -3/7

-2 0 0 0 -1/2 0 0 0 1 0 0 0
 -6 1 0 0 * -3 1 0 0 = 0 1 0 0
 3 1 1 0 9/2 e 1 0 0 0 1 0
 0 -4 -2 7 g h i 1/7 0 0 0 1

4) r3*c2 => 1 + e = 0 => e = -1
 -2 0 0 0 -1/2 0 0 0 1 0 0 0
 -6 1 0 0 * -3 1 0 0 = 0 1 0 0
 3 1 1 0 9/2 e 1 0 0 0 1 0
 0 -4 -2 7 -3/7 h i 1/7 0 0 0 1

5) r4*c2 => -4 + 2 + 7h = 0 => h = 2/7

-2 0 0 0 -1/2 0 0 0 1 0 0 0
 -6 1 0 0 * -3 1 0 0 = 0 1 0 0
 3 1 1 0 9/2 -1 1 0 0 0 1 0
 0 -4 -2 7 -3/7 h i 1/7 0 0 0 1

6) r4*c3 => - 2 + 7i = 0 => i = 2/7

-2 0 0 0 -1/2 0 0 0 1 0 0 0
 -6 1 0 0 * -3 1 0 0 = 0 1 0 0
 3 1 1 0 9/2 -1 1 0 0 0 1 0
 0 -4 -2 7 -3/7 h i 1/7 0 0 0 1
 d) Le résultat :

-2 0 0 0 -1/2 0 0 0 1 0 0 0
 -6 1 0 0 * -3 1 0 0 = 0 1 0 0
 3 1 1 0 9/2 -1 1 0 0 0 1 0
 0 -4 -2 7 -3/7 2/7 2/7 1/7 0 0 0 1