Aller au contenu

Mathc matrices/00e

Un livre de Wikilivres.


Matrice de Hankel

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

c00a.c
/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
#define FACTOR_E        +1.E-0         
/* ------------------------------------ */
void fun(int r)
{
double **U   = r_mR(          i_mR(R1, r),9);
double **V   = r_mR(          i_mR(r ,C1),9);	
double **A   = rHankel_mR(U,V,i_mR(r , r)  );

double **Pinv =               i_mR(r,r); 
double **Ide  =               i_mR(r,r);         

  clrscrn();
  printf(" A :");
  p_mR(A,S3,P0,C7); 
  
  printf(" Pinv = V * invS_T * U_T ");
  pseudo_Rn_mR(A,Pinv,FACTOR_E);  
  pE_mR(Pinv,S8,P3,C7);  
  
  printf(" Ide = Pinv * A ");   
  mul_mR(Pinv,A,Ide); 
  p_mR(Ide,S8,P2,C7); 

  f_mR(U);
  f_mR(V);      
  f_mR(A);
  f_mR(Pinv);
  f_mR(Ide); 
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
 fun(rp_I(R4)+R1);

} while(stop_w());

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */


Matrice de Hankel.

Exemple de sortie écran :

 A :
 -4  -8  -3  -7  -7 
 -8  -3  -7  -7  -1 
 -3  -7  -7  -1  +5 
 -7  -7  -1  +5  +8 
 -7  -1  +5  +8  -2 

 Pinv = V * invS_T * U_T 
+1.708e-02 -9.428e-02 +7.516e-02 -5.047e-02 -2.661e-02 
-9.428e-02 +8.299e-02 -1.912e-02 -5.469e-02 +2.191e-02 
+7.516e-02 -1.912e-02 -2.622e-01 +2.001e-01 -1.088e-01 
-5.047e-02 -5.469e-02 +2.001e-01 -1.397e-01 +1.453e-01 
-2.661e-02 +2.191e-02 -1.088e-01 +1.453e-01 -1.085e-01 

 Ide = Pinv * A 
   +1.00    +0.00    +0.00    +0.00    +0.00 
   +0.00    +1.00    -0.00    +0.00    +0.00 
   -0.00    -0.00    +1.00    -0.00    +0.00 
   +0.00    +0.00    +0.00    +1.00    +0.00 
   +0.00    +0.00    +0.00    -0.00    +1.00 


 Press   return to continue
 Press X return to stop