Mathc matrices/c31b
Apparence
Installer et compiler ces fichiers dans votre répertoire de travail.
c04a.c |
---|
/* ------------------------------------ */
/* Save as : c04a.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
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