Les complexes en C++

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.

redball.gifLes complexes avec CC

Avec CC, le fichier à inclure est complex.h. Un complexe se déclare simplement par complex z;

Voici un petit exemple

#include <iostream.h>
#include <complex.h>

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;
        
}

La commande pour compiler est simplement :

CC -o complexe complexe.C -lcomplex -lm

redball.gifLes complexes avec g++ (ou autres)

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

#include <iostream>
#include <complex>
#include <cmath>
using namespace std;
const double Pi=M_PI;

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;
        
}

La commande pour compiler est simplement :

g++ -o complexe complexe.C -lm


[Home|Syntaxe du C++|Fichiers|Classes I|Classes II|Graphisme]