Mathc matrices/c31d

Un livre de Wikilivres.


Application


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


c05a.c
/* ------------------------------------ */
/*  Save as :   c05a.c                  */
/* ------------------------------------ */
#include      "v_a.h"
/* ------------------------------------ */
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