Mathc complexes/040
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.