Aller au contenu

Mathc matrices/c31c

Un livre de Wikilivres.


Application


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


c04b.c
/* ------------------------------------ */
/*  Save as :   c04b.c                  */
/* ------------------------------------ */
#include      "v_a.h"
/* ------------------------------------ */
int main(void)
{
double a[16]={
     1.,     0.,     0.,     0., 
     3.,     1.,     0.,     0.,
     1.,    -2.,    -2.,     0., 
    -4.,     1.,     1.,     3.
     };          
double inva[16]={
    1.,     0.,    0.,      0., 
   -3.,     1.,    0.,      0.,
    7./2., -1.,   -1./2.,   0.,  
    7./6.,  0.,    1./6.,   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,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
     =====================================================
 
     1     0     0     0       a     0     0     0        1 0 0 0
     3     1     0     0    *  b     c     0     0    =   0 1 0 0
     1    -2    -2     0       d     e     f     0        0 0 1 0
    -4     1     1     3       g     h     i     j        0 0 0 1

    << Remplacer chaque lettre aux fur et à mesure. >>
    

    b) Inverser les coefficients de la diagonale :
       =========================================


      1 ->   a=  1
      1 ->   c=  1
     -2 ->   f= -1/2
      3 ->   j=  1/3


    c) Calculer le produit scalaire des r* lignes par les c* colonnes :
       ==============================================================

      r2*c1 =>            3   +   b = 0    =>    b = -3  
      r3*c1 =>        1 + 6   - 2 d = 0    =>    d =  7/2  
      r4*c1 =>  - 4 - 3 + 7/2 + 3 g = 0    =>    g =  7/6 
      r3*c2 =>          - 2   - 2 e = 0    =>    e = -1 
      r4*c2 =>        1 - 1   + 3 h = 0    =>    h =  0
      r4*c3 =>          - 1/2 + 3 i = 0    =>    i =  1/6
 

     d) Le résultat :
        =============
                             
    -2     0     0     0        1     0     0      0        1 0 0 0
    -6     1     0     0   *   -3     1     0      0    =   0 1 0 0
     3     1     1     0        7/2  -1    -1/2    0        0 0 1 0
     0    -4    -2     7        7/6   0     1/6    1/3      0 0 0 1