Mathc matrices/c12b10

Un livre de Wikilivres.


Application


Installer ce fichier dans votre répertoire de travail.


ccn4.c
/* ------------------------------------ */
/*  Save as :   ccn4.c                  */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int r,int c)
{
double **A     = r_mR(i_mR(r,c),9.);
double **A_T   =      i_mR(c,r);

double **S = i_mR(r,C1);
double **U = i_mR(r,r);
double **V = i_mR(c,c);

  clrscrn();  
  printf(" Copy/Past into the octave windows \n\n\n");
  p_Octave_mR(A,"A",P2);
  printf(" [U, S, V] =svd (A,10)\n\n\n");
  stop();

  clrscrn(); 
  
  transpose_mR(A,A_T);
   
  svd_U_Cn_mR(A,U); 
  svd_V_Cn_mR(A,V); 
  svds_mR(A_T,S);
  
  printf(" U :");
  p_mR(U,S5,P5,C10);   
    
  printf(" S :");
  p_mR(S,S5,P5,C10);
   
  printf(" V:");
  p_mR(V,S5,P5,C10);  
    
  f_mR(A);
  f_mR(A_T); 
  f_mR(S); 
  f_mR(U);
  f_mR(V); 
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

int i;

do
{
  i = rp_I(R3)+R1;
  
  fun(i,i+C4);

} while(stop_w());

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


Les quatre dernières colonnes de V ne correspondent pas à celles données par octave.


Exemple de sortie écran :
 ------------------------------------ 
 Copy/Past into the octave windows 


 A=[
-5.00,+6.00,-3.00,-9.00,-3.00,-3.00,+8.00,-5.00;
+8.00,-5.00,-1.00,+2.00,-5.00,-9.00,-1.00,-1.00;
+8.00,-9.00,+2.00,+2.00,+4.00,-1.00,-7.00,-3.00;
+6.00,-5.00,-3.00,+6.00,-5.00,-1.00,+6.00,-9.00]

 [U, S, V] =svd (A,10)


 Press return to continue. 


 ------------------------------------
 U :
-0.51015 +0.59266 +0.30882 +0.54142 
+0.47129 +0.35875 +0.72091 -0.35983 
+0.60712 -0.21767 +0.09020 +0.75887 
+0.38606 +0.68752 -0.61383 -0.03869 

 S :
+22.26857 
+17.28637 
+9.46701 
+7.25727 

 V:
+0.60598 +0.13250 -0.13328 -0.03487 +0.63299 -0.20266 +0.72381 +0.08430 
-0.57533 +0.01641 -0.05342 +0.21892 +0.00000 +0.00000 +0.61875 +0.00000 
+0.05008 -0.26811 -0.03956 -0.05090 +0.00000 +0.00000 +0.00000 +0.92299 
+0.40705 -0.05361 +0.51127 +0.59345 -0.35738 +0.35185 -0.11970 -0.00337 
-0.01472 -0.45585 +0.11630 -0.46903 +0.00000 +0.67844 -0.00000 +0.00000 
-0.16635 -0.31681 +0.72790 -0.12319 +0.39498 -0.51555 +0.27773 -0.06937 
-0.29126 +0.58030 +0.27091 +0.11755 +0.39274 +0.33025 -0.04220 +0.36900 
-0.14444 -0.51235 -0.31571 +0.58916 +0.40168 +0.00000 -0.00000 -0.00000 


 Press return to continue
 Press X      to stop