Mathc matrices/c31f
Installer et compiler ces fichiers dans votre répertoire de travail.
d04a.c |
---|
/* ------------------------------------ */
/* Save as : d04a.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
int main(void)
{
double a[16]={
1., -2., -2., 3.,
0., 1., 1., 3.,
0., 0., 3., 1.,
0., 0., 0., 3.
};
double inva[16]={
1., 2., 0., -3.,
0., 1., -1./3., -8./9.,
0., 0., 1./3., -1./9.,
0., 0., 0., 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,5,0,6);
printf(" invA : ");
p_mR(invA,5,3,6);
printf(" A*invA : ");
mul_mR(A,invA,AinvA);
p_mR(AinvA,5,3,6);
printf("\n\n\n Press return to continue");
f_mR(A);
f_mR(invA);
f_mR(AinvA);
getchar();
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 -2 -2 3 a b c d 1 0 0 0
0 1 1 3 0 e f g = 0 1 0 0
0 0 3 1 * 0 0 h i 0 0 1 0
0 0 0 3 0 0 0 j 0 0 0 1
<< Remplacer chaque lettre aux fur et à mesure. >>
b) Inverser les coefficients de la diagonale :
=========================================
-> a= 1
-> e= 1
-> h= 1/3
-> j= 1/3
c) Calculer le produit scalaire des r* lignes par les c* colonnes :
==============================================================
r1*c2 => b - 2 = 0 => b= 2
r2*c3 => f + 1/3 = 0 => f= -1/3
r1*c3 => c + 2/3 - 2/3 = 0 => c= 0
r3*c4 => 3i + 1/3 = 0 => i= -1/9
r2*c4 => g - 1/9 + 1 = 0 => g= -8/9
r1*c4 => d + 16/9 + 2/9 + 1 = 0 => d= -3
d) Le résultat :
=============
1 -2 -2 3 1 2 0 -3 1 0 0 0
0 1 1 3 0 1 -1/3 -8/9 = 0 1 0 0
0 0 3 1 * 0 0 1/3 -1/9 0 0 1 0
0 0 0 3 0 0 0 1/3 0 0 0 1