Mathc matrices/c31c
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c04b.c */
int main(void)
double a[16]={
 1., 0., 0., 0., 
 3., 1., 0., 0.,
 1., -2., -2., 0., 
 -4., 1., 1., 3.
double inva[16]={
 1., 0., 0., 0., 
 -3., 1., 0., 0.,
 7./2., -1., -1./2., 0., 
 7./6., 0., 1./6., 1./3. };
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

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

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

Mathc matrices/c31d
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c05a.c */
int main(void)
double a[25]={
 -2., 0., 0., 0., 0., 
 -2., -2., 0., 0., 0.,
 1., 1., -2., 0., 0.,
 1., 1., -2., 3., 0.,
 1., 1., 1., 1., 3.,
double inva[25]={
 -1./2., 0., 0., 0., 0.,
 1./2., -1./2., 0., 0., 0.,
 0., -1./4., -1./2., 0., 0., 
 0., 0., -1./3., 1./3., 0., 
 0., 1./4., 5./18., -1./9., 1./3., };
double **A = ca_A_mR(a, i_mR(R5,C5));
double **invA = ca_A_mR(inva,i_mR(R5,C5));
double **AinvA = i_mR(R5,C5);
 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 0 a 0 0 0 0 1 0 0 0 0
 -2 -2 0 0 0 * b c 0 0 0 = 0 1 0 0 0
 1 1 -2 0 0 d e f 0 0 0 0 1 0 0
 1 1 -2 3 0 g h i j 0 0 0 0 1 0
 1 1 1 1 3 k l m n o 0 0 0 0 1
 « Remplacer chaque lettre aux fur et à mesure. »
 b) Inverser les coefficients de la diagonale :
 -> a= -1/2 
 -> c= -1/2 
 -> f= -1/2
 -> j= 1/3 
 -> o= 1/3
 c) Calculer le produit scalaire des r* lignes par les c* colonnes :

r2*c1 => 1 - 2b = 0 => b = 1/2
 r3*c1 => -1/2 + 1/2 - 2d = 0 => d = 0
 r4*c1 => -1/2 + 1/2 + 3g = 0 => g = 0
 r5*c1 => -1/2 + 1/2 + 3k = 0 => k = 0
 r3*c2 => - 1/2 - 2e = 0 => e = -1/4
 r4*c2 => -1/2 + 1/2 + 3h = 0 => h = 0
 r5*c2 => -1/2 - 1/4 + 3l = 0 => l = 1/4 
 r4*c3 => 1 + 3i = 0 => i = -1/3 
 r5*c3 => -1/2 - 1/3 + 3m = 0 => m = 5/18 
 r5*c4 => 1/3 + 3n = 0 => n = -1/9
 d) Le résultat :

-2 0 0 0 0 -1/2 0 0 0 0 1 0 0 0 0
 -2 -2 0 0 0 * 1/2 -1/2 0 0 0 = 0 1 0 0 0
 1 1 -2 0 0 0 -1/4 -1/2 0 0 0 0 1 0 0
 1 1 -2 3 0 0 0 -1/3 1/3 0 0 0 0 1 0
 1 1 1 1 3 0 1/4 5/18 -1/9 1/3 0 0 0 0 1