UJF - Licence de Physique
[ Home| Syntaxe C++| Fichiers| Classes I| Classes II| Graphisme ]Il existe une classe complex permettant de définir des nombres complexes. Selon les compilateurs, il y a 2 façon de déclarer un nombre complexe ; en fait, soit vous utilisez le compilateur CC de HP, soit vous utilisez un autre compilateur... Bien sûr, dans le cadre de ce module, nous utiliserons CC, mais pour des raisons de portabilité, nous vous donnons aussi le fonctionnement avec la plupart des compilateurs de C++ (g++, cxx, aCC, ...). Les différences principales résident dans le nom du fichier include et la déclaration.
Avec CC, le fichier à inclure est complex.h. Un complexe se déclare simplement par complex z;
Voici un petit exemple
const double Pi=3.1415926535897932385e0;
int main()
{
complex z(1.,2.), zz,I(0.,1.);
zz=3.+I*4.;
complex zzz = z + zz;
cout<<z<<"+"<<zz<<"="<<zzz<<endl;
cout<<"Complexe Conjugue "<<conj(zzz)<<endl;
cout<<"Partie Reelle "<<real(zzz)<<endl;
cout<<"Partie Imaginaire "<<imag(zzz)<<endl;
cout<<"Module Carre "<<norm(zzz)<<endl;
cout<<"Module "<<abs(zzz)<<endl;
cout<<"Argument "<<arg(zzz)<<endl;
cout<<"I*I="<<I*I<<endl;
cout<<"sqrt(-1)="<<sqrt(complex(-1.))<<endl;
cout<<"exp(I*Pi)"<<exp(I*Pi)<<endl;
}
CC -o complexe complexe.C -lcomplex -lm
La plupart des compilateurs utilisent, pour la classe complexe, des patrons. C'est-à-dire qu'on peut déclarer un complexe pour divers types (int, float, double,...). Le fichier à inclure est complex (sans le .h). Un complexe formé de double sera déclaré par complex<double> z; un complexe formé d'entiers sera complex<int> z;
Voici un petit exemple
int main()
{
complex<double> z(1.,2.), zz,I(0.,1.);
zz=3.+I*4.;
complex<double> zzz = z + zz;
cout<<z<<"+"<<zz<<"="<<zzz<<endl;
cout<<"Complexe Conjugue "<<conj(zzz)<<endl;
cout<<"Partie Reelle "<<real(zzz)<<endl;
cout<<"Partie Imaginaire "<<imag(zzz)<<endl;
cout<<"Module Carre "<<norm(zzz)<<endl;
cout<<"Module "<<abs(zzz)<<endl;
cout<<"Argument "<<arg(zzz)<<endl;
cout<<"I*I="<<I*I<<endl;
cout<<"sqrt(-1)="<<sqrt(complex<double>(-1.))<<endl;
cout<<"exp(I*Pi)"<<exp(I*Pi)<<endl;
}
g++ -o complexe complexe.C -lm