NOMBRES COMPLEXES ( C++, CLASSE )

cs_ThomasC Messages postés 5 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 9 juillet 2003 - 13 févr. 2003 à 17:30
EagleUnderscoreOne Messages postés 30 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 24 avril 2009 - 23 juil. 2008 à 18:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/10292-nombres-complexes-c-classe

EagleUnderscoreOne Messages postés 30 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 24 avril 2009
23 juil. 2008 à 18:57
TOBBY
L'exponentielle d'un complexe, c'est: exp(partie réelle)*(cos(partie_imaginaire)+i*sin(partie_imaginaire)).
moooody Messages postés 2 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 27 septembre 2006
27 sept. 2006 à 19:15
si je veux envoyer le reel x+iy comment je définis le "i" complexe dans une classe C++ ou tt
simplement dans code en C??
J'aimerai bien rajouter une méthode qui renvoie ce nombre avec la partie réelle et imaginaire!!

Quelq'un aurait une idée??
Merci
Fabrice971 Messages postés 4 Date d'inscription dimanche 13 juin 2004 Statut Membre Dernière intervention 11 août 2004
27 juin 2004 à 01:30
Pas mal du tout , enfin un source avec constructeurs qui n'oblige pas à passer par des fonctions ! Quelqu'un aurait-il l'excellente idée de transposer ceci en C# ? (Aïe ! non ! pas la tête !) Enfin , disons surtout l'addition , ce serait le plus simple ... je suis en mesure d'écrire le reste des fonctions du moment qu'on me donne la syntaxe pour créer des opérateurs sur des classes. Le reste je l'ai , puisque j'avais créé un bon petit logiciel de fractales il y a bien dix ans en C et m'était emm...... à TOUT écrire , opération par opération ! jusqu'aux sinus et autres tagentes etc ...
cs_tobby Messages postés 17 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 9 mars 2010
10 mars 2003 à 12:02
Tres instructif !!

Quelqu'un aurait une idee pour une fonction exponentiel d'un complexe ?
cs_Nemesys Messages postés 10 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 14 septembre 2005
13 févr. 2003 à 22:44
En reponse au message de ThomasC, les fichiers sources ont été modifiés et corrigés.
cs_ThomasC Messages postés 5 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 9 juillet 2003
13 févr. 2003 à 17:30
J'ai appris plein de chose sur la gestion des classes
par contre la multiplication complexe et la division complexe est fausse.

Un peu de math :
Soit les nombres complexes Z1(a,b) et Z2(c,d)
Z1*Z2=(a+ib)*(c+id)=ac-bd+i(ad+bc)=Z3
Le nombre complexe Z3 est donc Z3(ac-bd, ad+bc)

De meme pour la division
Z1/Z2=(a+ib)/(c+id) l'astuce consiste à *(c-id) en haut et en bas
Z1/Z2=((a+ib)*(c-id)) / ((c+id)*(c-id))
Z1/Z2=((ac+bd) + i(bc-ad)) / (c^2+d^2)=Z3
reel(Z3)=(ac+bd)/(c^2+d^2)
im(Z3)=(bc-ad)/(c^2+d^2)

Ainsi ma contribution au code est :
/*******************************************************************************************/
// Multiplier deux complexes
//***
// A VERIFIER !!!
/*******************************************************************************************/
Complexe & Complexe::operator *(const Complexe & complexe)
{
Complexe * ptComplexe = new Complexe();

(*ptComplexe).m_Imaginaire
= m_Reel * complexe.m_Imaginaire + m_Imaginaire * complexe.m_Reel;

(*ptComplexe).m_Reel
= m_Reel * complexe.m_Reel - m_Imaginaire * complexe.m_Imaginaire ;

return * ptComplexe;
}

/*******************************************************************************************/
// diviser deux complexes
// Operator diviser
// avec (a+ib)(a-ib) = a2-(bi)2 ou i2=-1 => a2+b2
/*******************************************************************************************/
Complexe & Complexe::operator /(const Complexe & complexe)
{
Complexe * ptComplexe = new Complexe();

(*ptComplexe).m_Imaginaire
= -m_Reel * complexe.m_Imaginaire + m_Imaginaire * complexe.m_Reel;

(*ptComplexe).m_Reel
= m_Reel * complexe.m_Reel + m_Imaginaire * complexe.m_Imaginaire ;

float denominateur = complexe.m_Reel * complexe.m_Reel + complexe.m_Imaginaire * complexe.m_Imaginaire;

(*ptComplexe).m_Imaginaire /= denominateur;
(*ptComplexe).m_Reel /= denominateur;

return * ptComplexe;
}