Mathc matrices/h12b

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


Sommaire


Installer ce fichier dans votre répertoire de travail.

Crystal Clear mimetype source h.png vgjsvdrn.h
'
/* ------------------------------------ */
/*  Save as :   vgjsvdrn.h              */
/* ------------------------------------ */
/* ------------------------------------ */
void svd_V_Rn_uv_mR(
double **A,
double **V
)
{
	 svd_U_Cn_uv_mR(A,V);
}
/* ------------------------------------ */
/* ------------------------------------ */
void svd_U_Rn_uv_mR(
double **A,
double **U
)
{
int i;

int r = rsize_R(A);
int c = csize_R(A);

double **A_T       =         i_mR(c,r);	
double **A_TA      =         i_mR(c,c);

double **EigsValue =         i_mR(r,C1);
double **eignV     =         i_mR(c,r);

double **Ab;
double **b         =   m0_mR(i_mR(c,C1));

double **Ide       =  eye_mR(i_mR(c,c));
double **sIde      =         i_mR(c,c);
double **A_TAmnssIde =       i_mR(c,c);

/* ------------------------------------ 
   eigs_value_AA_T_uv_mR(A,  eignValue); if(c > r)
   eigs_value_AA_T_uv_mR(A_T,eignValue); if(r > c)
   ------------------------------------ */
  eigs_value_AA_T_uv_mR(A,EigsValue);
   
  transpose_mR(A,A_T);
  
  mul_mR(A_T,A,A_TA);
    
  for(i = R1; i <= rsize_R(EigsValue); i++)
  {  
      smul_mR(EigsValue[i][C1],Ide,sIde);
      MmnsD_mR(A_TA,sIde,A_TAmnssIde);
      
      Ab = i_Abr_Ac_bc_mR(rsize_R(A_TAmnssIde),
                     csize_R(A_TAmnssIde),
                     csize_R(b));
      
      c_A_b_Ab_mR(A_TAmnssIde,b, Ab); 
               
      gj_freevariable_eignvector_uv_mR(Ab,eignV);
      c_c_mR(eignV,C2,U,i);  
  }    
   
  Normalize_uv_mR(U);  

  f_mR(EigsValue);
  f_mR(eignV);
   
  f_mR(A_TA);
  
  f_mR(Ab);
  f_mR(b);
  
  f_mR(Ide);
  f_mR(sIde);
  f_mR(A_TAmnssIde);
}
/* ------------------------------------ */
/* ------------------------------------ */