Mathc matrices/c31g

Un livre de Wikilivres.
Aller à la navigation Aller à la recherche


Sommaire


Installer et compiler ces fichiers dans votre répertoire de travail.


Crystal Clear mimetype source c.png 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