Mathc complexes/a02
Bibliothèque
---- 
Nous n'avons pas encore introduit les fonctions permettant de visualiser les matrices. 
On peut vérifier en aveugle si la compilation ce passe correctement.
Exemple pour tester la bibliothèque :

Mathc complexes/a03
Bibliothèque
Exemple pour tester la bibliothèque :

Mathc complexes/a04
Bibliothèque
Exemple pour tester la bibliothèque :

Mathc complexes/b01
Application
Mathc complexes/b02
Application
Mathc complexes/e01
Application
Étude de quelques fonctions :

Mathc complexes/c05e
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c01e.c */
void fun(int r)
double **u = r_mZ(i_mZ(r,C1),9.);
double **v = r_mZ(i_mZ(r,C1),9.);
 clrscrn();
 printf(" u :");
 p_mZ(u, S3,P0, S3,P0, C6); 
 printf(" v :");
 p_mZ(v, S3,P0, S3,P0, C6); 
 printf(" <u,v> = conj(v)^t u\n\n"); 
 printf(" <u,v> =");
 p_Z(dotuv_Z(u,v), S0,P2, S0,P2);
 f_mZ(u);
 f_mZ(v);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Nous voyons le produit scalaire : dotuv_Z(u,v);

Exemple de sortie écran :
 u :
 -7 -3i 
 +6 +2i 
 -5 -3i 
 +6 +4i 
 +2 +2i 
 v :
 +6 -7i 
 -1 -5i 
 +6 +2i 
 -5 +2i 
 +8 +8i 
 <u,v> = conj(v)^t u
 <u,v> =-63.00-79.00i 
 Press return to continue
 Press X to stop

Mathc complexes/c05e2
Application 
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c01e2.c */
void fun(int r)
double **u = r_mZ(i_mZ(r,C1),9.);
double **v = r_mZ(i_mZ(r,C1),9.);
 clrscrn();
 printf(" u :");
 p_mZ(u, S3,P0, S3,P0, C6); 
 printf(" v :");
 p_mZ(v, S3,P0, S3,P0, C6); 
 printf("\n");
 printf(" <u,v> = conj(<v,u>)\n\n");
 printf(" <u,v> =");
 p_Z(dotuv_Z(u,v), S0,P2, S0,P2);
 printf("\n"); 
 printf(" conj(<v,u>) =");
 p_Z(conj_Z(dotuv_Z(v,u)), S0,P2, S0,P2);
 printf("\n\n");

f_mZ(u);
 f_mZ(v);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Nous calculons = conj(<v,u>)

Exemple de sortie écran :
 u :
 -1 -7i 
 -3 -9i 
 -7 -1i 
 +4 -7i 
 v :
 -5 -1i 
 -9 -1i 
 +6 -3i 
 -7 -1i 
 <u,v> = conj(<v,u>)
 <u,v> =-12.00+138.00i 
 conj(<v,u>) =-12.00+138.00i 
 Press return to continue
 Press X to stop

Mathc complexes/c05f
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c01f.c */
void fun(int r)
double **u = r_mZ(i_mZ(r,C1),9.);
 clrscrn();
 printf(" u :");
 p_mZ(u, S3,P0, S3,P0, C6); 
 printf(" ||u|| = (<u,u>)^(1/2)\n\n");
 printf(" (<u,u>)^(1/2) = %.3f \n", 
 pow(Re_Z(dotuv_Z(u,u)) ,(1./2.)));
 printf(" ||u|| = %.3f \n\n",
 normuv_Z(u));
 f_mZ(u);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
Nous calculons la norme d'un vecteur : normuv_R(u);

Exemple de sortie écran :
 u :
 +6 -5i 
 -5 +6i 
 +2 -1i 
 ||u|| = (<u,u>)^(1/2)
 (<u,u>)^(1/2) = 11.269 
 ||u|| = 11.269 
 Press return to continue
 Press X to stop

Mathc complexes/c05h
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c01h.c */
void fun(int r)
double **u = r_mZ(i_mZ(r,C1),9.);
double **n_u = i_mZ(r,C1);
 clrscrn();
 printf(" u :");
 p_mZ(u, S8,P2, S6,P2, C6);
 smul_mZ(1./normuv_Z(u),u,n_u); 
 printf(" n_u = (1/||u||) u :");
 p_mZ(n_u, S8,P4, S6,P4, C6); 
 printf(" ||n_u|| = %.6f \n\n", normuv_Z(n_u));
 f_mZ(u);
 f_mZ(n_u);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Nous normalisons un vecteur colonne : smul_mZ(1./normuv_Z(u),u,n_u);

Exemple de sortie écran :
 u :
 +2.00 -5.00i 
 -9.00 -5.00i 
 +8.00 +4.00i 
 +2.00 +2.00i 
 n_u = (1/||u||) u :
 +0.13 -0.33i 
 -0.60 -0.33i 
 +0.54 +0.27i 
 +0.13 +0.13i 
 ||n_u|| = 1.000000 
 Press return to continue
 Press X to stop

Mathc complexes/c05i
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c01i.c */
void fun(int r)
double **u = r_mZ(i_mZ(r,C1),9.);
double **v = r_mZ(i_mZ(r,C1),9.);
 clrscrn();
 printf(" u :");
 p_mZ(u, S3,P0, S3,P0, C6); 
 printf(" v :");
 p_mZ(v, S3,P0, S3,P0, C6); 
 printf(" d(u,v) = ||u-v|| = (<u-v,u-v>)^1/2 \n\n");
 printf(" d(u,v) = %.4f \n", distuv_Z(u,v));
 printf(" d(v,u) = %.4f \n\n", distuv_Z(v,u));
 f_mZ(u);
 f_mZ(v);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Nous calulons la distance entre deux vecteurs : distuv_Z(u,v);

Exemple de sortie écran :
 u :
 +2 -5i 
 -7 +2i 
 +6 -7i 
 +8 +2i 
 -5 +6i 
 v :
 +6 +6i 
 -1 -5i 
 +2 +8i 
 +4 -3i 
 -3 -5i 
 d(u,v) = ||u-v|| = (<u-v,u-v>)^1/2 
 d(u,v) = 25.080 
 d(v,u) = 25.080 
 Press return to continue
 Press X to stop

Mathc complexes/c05j
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c01j.c */
void fun(int r)
double **u = r_mZ(i_mZ(r,C1),9.);
double **v = r_mZ(i_mZ(r,C1),9.);
double **projuv = i_mZ(r,C1);
 clrscrn();
 printf(" u :");
 p_mZ(u, S3,P0, S3,P0, C6); 
 printf(" v :");
 p_mZ(v, S3,P0, S3,P0, C6);
 projuv_mZ(u,v,projuv);
 printf(" vector component of u along v \n\n"); 
 printf(" projuv :");
 p_mZ(projuv, S3,P4, S3,P4, C6); 
 f_mZ(u);
 f_mZ(v);
 f_mZ(projuv);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Nous calculons le projeté de u sur v : projuv_mZ(u,v,projuv);

Exemple de sortie écran :
 u :
 +2 -1i 
 -5 -1i 
 +4 +6i 
 -1 -1i 
 +8 -9i 
 v :
 -7 +8i 
 -5 +8i 
 -7 -9i 
 -1 -5i 
 -1 +2i 
 vector component of u along v 
 projuv :
+1.64-2.72i 
+1.06-2.62i 
+2.53+2.29i 
+0.56+1.42i 
+0.19-0.64i 
 Press return to continue
 Press X to stop

Mathc complexes/c05k
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c01k.c */
void fun(int r)
double **u = r_mZ(i_mZ(r,C1),9.);
double **v = r_mZ(i_mZ(r,C1),9.);
double **projuv = i_mZ(r,C1);
double **umnsprojuv = i_mZ(r,C1);
 clrscrn();
 printf(" u :");
 p_mZ(u, S8,P0, S6,P0, C6); 
 printf(" v :");
 p_mZ(v, S8,P0, S6,P0, C6); 
 stop();
 clrscrn();
 projuv_mZ(u,v,projuv);
 printf(" vector component of u along v \n\n"); 
 printf(" projuv :");
 p_mZ(projuv, S8,P4, S6,P4, C6); 
 stop();
 clrscrn();
 printf(" vector component of u orthogonal to v \n\n");
 printf(" u - projuv :");
 sub_mZ(u,projuv,umnsprojuv);
 p_mZ(umnsprojuv, S8,P4, S6,P4, C6); 
 printf(" <v,u - projuv> =");
 p_Z(dotuv_Z(v,umnsprojuv), S6,P4, S6,P4);

f_mZ(u);
 f_mZ(v);
 f_mZ(projuv);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Nous vérifions une des propriétés du projeté de u sur v : <v,u - projuv> = -0.000000

Exemple de sortie écran :
 u :
 +2.00 -3.00i 
 +8.00 +8.00i 
 -9.00 +6.00i 
 -5.00 -9.00i 
 -5.00 +6.00i 
 v :
 -5.00 -5.00i 
 +4.00 +8.00i 
 +6.00 -3.00i 
 +4.00 -1.00i 
 +8.00 -3.00i 
 Press return to continue. 
 vector component of u along v 
 projuv :
 +0.64 +0.87i 
 -0.42 -1.30i 
 -0.97 +0.32i 
 -0.63 +0.06i 
 -1.28 +0.27i 
 Press return to continue. 
 vector component of u orthogonal to v 
 u - projuv :
 +1.36 -3.87i 
 +8.42 +9.30i 
 -8.03 +5.68i 
 -4.37 -9.06i 
 -3.72 +5.73i 
 <v,u - projuv> = +0.00 +0.00i 
 Press return to continue
 Press X to stop