Application


Présentation de la fonction  orth_mZ();
orth_mR()
/* ------------------------------------ */
/* ------- u.v = conj(v)^t u ---------- */
/* ------------------------------------ */
double **orth_mZ(
double **U,
double **Orth
)
{
double **Vect_U      = i_mZ(rsize_Z(U),C1);
double **Vect_T      = i_mZ(rsize_Z(U),C1);
double **Vect_Orth   = i_mZ(rsize_Z(U),C1);
double **Vect_projuv = i_mZ(rsize_Z(U),C1);

int c_U;	
int c_Orth;

  c_c_mZ(U,C1, Orth,C1);

  for( c_U = C2; c_U <= csize_Z(U); c_U++)
      {
		c_c_mZ(U,c_U, Vect_U,C1);
		c_c_mZ(U,c_U, Vect_T,C1);

		for( c_Orth = C1; c_Orth < c_U; c_Orth++)
          {		
		    c_c_mZ(Orth,c_Orth, Vect_Orth,C1); 
		 		                
		    proj_mZ(Vect_U,Vect_Orth,Vect_projuv);  
		    sub_mZ(Vect_T,Vect_projuv,Vect_Orth);
		    
		    c_mZ(Vect_Orth,Vect_T);    
	      }
	      c_c_mZ(Vect_T,C1, Orth,c_Orth);		
	  }
	  
  f_mZ(Vect_U);  
  f_mZ(Vect_T);   
  f_mZ(Vect_Orth);  
  f_mZ(Vect_projuv);  
         
 return(Orth);
}
/* ------------------------------------ */
/* ------------------------------------ */



L'algorithme de Gram-Schmidt
============================

 U = {u1,u2,u3,u4}           Une base de U donnée dans l'exercice.
 
 V = {v1,v2,v3}              La base orthonormale, calculée par l'algorithme de Gram-Schmidt.
                               <u2.v1>
 Le projeté de u2 sur v1 =    ---------  v1
                               |v1||**2
              
 
 a) v1 = u1
 
               <u2.v1>
 b) v2 = u2 - ---------  v1
              ||v1||**2
              
              
               <u3.v1>         <u3.v2>
 c) v3 = u3 - ---------  v1 - ---------  v2
              ||v1||**2       ||v2||**2 
              
 
               <u4.v1>         <u4.v2>          <u4.v3>
 c) v4 = u4 - ---------  v1 - ---------  v2  - ---------  v3
              ||v1||**2       ||v2||**2        ||v3||**2 
                           
                          
  Il faut ensuite normaliser les vecteurs v pour obtenir une base orthonormale.