Mathc matrices/c31g
Installer et compiler ces fichiers dans votre répertoire de travail.
d05a.c |
---|
/* ------------------------------------ */
/* Save as : d05a.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
int main(void)
{
double a[25]={
-2., 3., -2., -2., 3.,
0., 3., 1., 1., 1.,
0., 0., -2., 1., 1.,
0., 0., 0., 1., -2.,
0., 0., 0., 0., 1.
};
double inva[25]={
-1./2., 1./2., 3./4., -9./4., -17./4.,
0., 1./3., 1./6., -1./2., -3./2.,
0., 0., -1./2., 1./2., 3./2.,
0., 0., 0., 1., 2.,
0., 0., 0., 0., 1. };
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,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
=====================================================
-2 3 -2 -2 3 a b c d e 1 0 0 0 0
0 3 1 1 1 0 f g h i = 0 1 0 0 0
0 0 -2 1 1 * 0 0 j k l 0 0 1 0 0
0 0 0 1 -2 0 0 0 m n 0 0 0 1 0
0 0 0 0 1 0 0 0 0 o 0 0 0 0 1
<< Remplacer chaque lettre aux fur et à mesure. >>
b) Inverser les coefficients de la diagonale :
=========================================
-> a= -1/2
-> f= 1/3
-> j= -1/2
-> m= 1
-> o= 1
c) Calculer le produit scalaire des r* lignes par les c* colonnes :
==============================================================
r1*c2 => -2b + 1 = 0 => b= 1/2
r2*c3 => 3g - 1/2 = 0 => g= 1/6
r1*c3 => -2c + 1/2 + 1 = 0 => c= 3/4
r3*c4 => -2k + 1 = 0 => k= 1/2
r2*c4 => 3h + 1/2 + 1 = 0 => h= -1/2
r1*c4 => -2d - 3/2 - 1 - 2 = 0 => d= -9/4
r4*c5 => n - 2 = 0 => n= 2
r3*c5 => -2l + 2 + 1 = 0 => l= 3/2
r2*c5 => 3i + 3/2 + 2 + 1 = 0 => i= -3/2
r1*c5 => -2e - 9/2 - 3 - 4 + 3 = 0 => e= -17/4
d) Le résultat :
=============
-2 3 -2 -2 3 -1/2 1/2 3/4 -9/4 -17/4 1 0 0 0 0
0 3 1 1 1 0 1/3 1/6 -1/2 -3/2 = 0 1 0 0 0
0 0 -2 1 1 * 0 0 -1/2 1/2 3/2 0 0 1 0 0
0 0 0 1 -2 0 0 0 1 2 0 0 0 1 0
0 0 0 0 1 0 0 0 0 1 0 0 0 0 1