begin process at 2012 02 04 07:37:48
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > COMPLEXES

COMPLEXES


 Information sur la source

Note :
8 / 10 - par 2 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Source .NET ( DotNet ) Classé sous :complexe, maths, sebeuh, csharp, net Niveau :Débutant Date de création :09/06/2006 Vu / téléchargé :11 250 / 237

Auteur : seboss

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
C'est une structure pouvant manipuler les bases des complexes (operations de base, module, argument, etc..) pour pouvoir jouer avec les complexes dans n'importe quelle application !

La structure que j'ai ecrite nommé Complexe comporte :

* 1 constructeur pour créer de nouveau complexe :

// Création du complexe 3-i5
Complexe monComplexe = new Complexe(3,-5);

* 2 accesseurs en get/set pour pouvoir recuperer ou modifier les parties Reelles et Imaginaires du complexe

// Recuperation de la partie Reele dans a :
double a = monComplexe.Reel;
// Modification de la partie Imaginaire à -8 :
monComplexe.Imaginaire = -8;

* 4 accesseurs en lecture seule (get seulement) pour récupérer le Conjugué, le module, l'argument et le carré d'un complexe :

// Conjugué (retourne un nouveau Complexe)  :
Complexe le_conjugue = monComplexe.Conjugue;
// Module (retourne un double) :
double module = monComplexe.Module;
// Argument (retourne un double) :
double argument = monComplexe.Argument;
// Carré du complexe (retourne un nouveau Complexe) :
Complexe au_carre = monComplexe.Carre;

* 1 méthode : Rotation qui retourne un nouveau complexe de la rotation du complexe par un angle (en double) et d'un centre (Complexe)

// Rotation de monComplexe d'angle 3.0 par le centre 2+i4
Complexe nouveau_point = monComplexe.Rotation(3.0,new Complexe(2,4));

* 4 surcharges d'operateurs pour les operations +, -, *, / respectivement addition, soustration, multiplication, division :

Complexe cmp1, cmp2, resultat;
cmp1 = new Complexe(3,-6);
cmp2 = new Complexe(6,7);
// Addition de cmp1 par cmp2
resultat = cmp1 + cmp2;
// Soustraction de cmp1 par cmp2
resultat = cmp1 - cmp2;
// Multiplication de cmp1 par cmp2
resultat = cmp1 * cmp2;
// Division de cmp1 pr cmp2
resultat = cmp1 + cmp2;

* Et pour finir 1 surcharge de la methode ToString() afin de pouvoir recuperer le complexe en string sous la forme a+ib :

Complexe monComplexe = new Complexe(4,-5);
Console.WriteLine(monComplexe); // Affiche a l'ecran : 4-5i

Source

  • /*
  • Structure COMPLEXE
  • Gestion des nombres Complexes
  • Version 1.0 - Last Modif : 21/04/2006 15:52
  • Développé par SeBeuh < sebeuh [arobase] ajsinfo [point].net >
  • (c) 2006 - http://sebeuh.ajsinfo.net
  • */
  • using System;
  • using System.Collections.Generic;
  • using System.Text;
  • namespace Complexes
  • {
  • // Structure : Complexe
  • public struct Complexe
  • {
  • // Champs
  • private double _reel;
  • private double _imaginaire;
  • // Constructeur
  • public Complexe(double reel, double imaginaire)
  • {
  • this._reel = reel;
  • this._imaginaire = imaginaire;
  • }
  • // Surcharge de la methode ToString()
  • // renvoi du complexe sous la forme a+ib
  • public override string ToString()
  • {
  • string re = "", img = "";
  • if(this._reel != 0)
  • re = ((float)this._reel).ToString();
  • if (this._imaginaire > 0 && this._imaginaire != 1)
  • img = "+" + ((float)this._imaginaire).ToString() + "i";
  • else if (this._imaginaire == 1)
  • img = "+i";
  • else if (this._imaginaire < 0 && this._imaginaire != -1)
  • img = ((float)this._imaginaire).ToString() + "i";
  • else if (this._imaginaire == -1)
  • img = "-i";
  • return (re + img);
  • }
  • // Surcharge des operateurs
  • // Addition
  • public static Complexe operator +(Complexe c1, Complexe c2)
  • {
  • return (new Complexe((c1.Reel + c2.Reel), (c1.Imaginaire + c2.Imaginaire)));
  • }
  • // Soustraction
  • public static Complexe operator -(Complexe c1, Complexe c2)
  • {
  • return (new Complexe((c1.Reel - c2.Reel), (c1.Imaginaire - c2.Imaginaire)));
  • }
  • // Multiplication
  • public static Complexe operator *(Complexe c1, Complexe c2)
  • {
  • return (new Complexe(((c1.Reel * c2.Reel) - (c1.Imaginaire * c2.Imaginaire)), ((c1.Reel * c2.Imaginaire) + (c2.Reel * c1.Imaginaire))));
  • }
  • // Division
  • public static Complexe operator /(Complexe c1, Complexe c2)
  • {
  • return (new Complexe(((c1._reel * c2._reel - c1._imaginaire * (-c2._imaginaire)) / (Math.Pow(c2._reel, 2) + Math.Pow(c2._imaginaire, 2))), ( ((c1._reel * (-c2._imaginaire) + c2._reel * c1._imaginaire) / (Math.Pow(c2._reel, 2) + Math.Pow(c2._imaginaire, 2))))));
  • }
  • // Methodes
  • // Rotation
  • public Complexe Rotation(double angle, Complexe centre)
  • {
  • return (((this - centre) * (new Complexe(Math.Cos(angle), Math.Sin(angle)))) + centre);
  • }
  • // Accesseurs en Get (read only)
  • // Conjugué du complexe
  • public Complexe Conjugue
  • {
  • get { return new Complexe(this._reel, (0 - this._imaginaire)); }
  • }
  • // Module du complexe
  • public double Module
  • {
  • get { return Math.Sqrt((Math.Pow(this._reel, 2) + Math.Pow(this._imaginaire, 2))); }
  • }
  • // Argument du complexe
  • public double Argument
  • {
  • get { return (Math.Atan((this._imaginaire / this._reel))); }
  • }
  • // Carré du complexe
  • public Complexe Carre
  • {
  • get { return new Complexe((Math.Pow(this._reel,2)-Math.Pow(this._imaginaire,2)),(2*this._reel*this._imaginaire)); }
  • }
  • // Accesseurs en Get&Set
  • // Partie Reel
  • public double Reel
  • {
  • get { return this._reel; }
  • set { this._reel = value; }
  • }
  • // Partie Imaginaire
  • public double Imaginaire
  • {
  • get { return this._imaginaire; }
  • set { this._imaginaire = value; }
  • }
  • }
  • }
/*

	Structure COMPLEXE
	Gestion des nombres Complexes
	Version 1.0 - Last Modif : 21/04/2006 15:52
	Développé par SeBeuh < sebeuh [arobase] ajsinfo [point].net >
	(c) 2006 - http://sebeuh.ajsinfo.net

*/
using System;
using System.Collections.Generic;
using System.Text;

namespace Complexes
{
    // Structure : Complexe
    public struct Complexe
    {
        // Champs
        private double _reel;
        private double _imaginaire;

        // Constructeur
        public Complexe(double reel, double imaginaire)
        {
            this._reel = reel;
            this._imaginaire = imaginaire;
        }

        // Surcharge de la methode ToString()
        //  renvoi du complexe sous la forme a+ib
        public override string ToString()
        {
            string re = "", img = "";
            if(this._reel != 0)
                re = ((float)this._reel).ToString();
            if (this._imaginaire > 0 && this._imaginaire != 1)
                img = "+" + ((float)this._imaginaire).ToString() + "i";
            else if (this._imaginaire == 1)
                img = "+i";
            else if (this._imaginaire < 0 && this._imaginaire != -1)
                img = ((float)this._imaginaire).ToString() + "i";
            else if (this._imaginaire == -1)
                img = "-i";
            return (re + img);
        }

        // Surcharge des operateurs
        //  Addition
        public static Complexe operator +(Complexe c1, Complexe c2)
        {
            return (new Complexe((c1.Reel + c2.Reel), (c1.Imaginaire + c2.Imaginaire)));
        }
        //  Soustraction
        public static Complexe operator -(Complexe c1, Complexe c2)
        {
            return (new Complexe((c1.Reel - c2.Reel), (c1.Imaginaire - c2.Imaginaire)));
        }
        //  Multiplication
        public static Complexe operator *(Complexe c1, Complexe c2)
        {
            return (new Complexe(((c1.Reel * c2.Reel) - (c1.Imaginaire * c2.Imaginaire)), ((c1.Reel * c2.Imaginaire) + (c2.Reel * c1.Imaginaire))));
        }
        //  Division
        public static Complexe operator /(Complexe c1, Complexe c2)
        {
            return (new Complexe(((c1._reel * c2._reel - c1._imaginaire * (-c2._imaginaire)) / (Math.Pow(c2._reel, 2) + Math.Pow(c2._imaginaire, 2))), ( ((c1._reel * (-c2._imaginaire) + c2._reel * c1._imaginaire) / (Math.Pow(c2._reel, 2) + Math.Pow(c2._imaginaire, 2))))));
        }

        // Methodes
        //  Rotation
        public Complexe Rotation(double angle, Complexe centre)
        {
            return (((this - centre) * (new Complexe(Math.Cos(angle), Math.Sin(angle)))) + centre);
        }

        // Accesseurs en Get (read only)
        //  Conjugué du complexe
        public Complexe Conjugue
        {
            get { return new Complexe(this._reel, (0 - this._imaginaire)); }
        }
        //  Module du complexe
        public double Module
        {
            get { return Math.Sqrt((Math.Pow(this._reel, 2) + Math.Pow(this._imaginaire, 2))); }
        }
        //  Argument du complexe
        public double Argument
        {
            get { return (Math.Atan((this._imaginaire / this._reel))); }
        }
        //  Carré du complexe
        public Complexe Carre
        {
            get { return new Complexe((Math.Pow(this._reel,2)-Math.Pow(this._imaginaire,2)),(2*this._reel*this._imaginaire)); }
        }

        // Accesseurs en Get&Set
        //  Partie Reel
        public double Reel
        {
            get { return this._reel; }
            set { this._reel = value; }
        }
        //  Partie Imaginaire
        public double Imaginaire
        {
            get { return this._imaginaire; }
            set { this._imaginaire = value; }
        }
    }
}

 Conclusion

Bref il y a toutes les fonctions de bases sur les complexes pour pouvoir les utiliser très facilement dans vos développements :-)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) SIMIMMUNO
Source avec Zip Source avec une capture Source .NET (Dotnet) MASTERMIND + IA (PROJET TPE 2005)

 Sources de la même categorie

Source avec Zip Source avec une capture (CONSOLE) TROUVER LA CLEF D'UN CODE INSEE EN DONNANT SES 13 ... par Maxime95k
Source avec Zip Source .NET (Dotnet) QUANTUM BIBLIOTHÈQUE MATHÉMATIQUES par QuantumNet
Source avec Zip Source avec une capture Source .NET (Dotnet) ALGORITHME DE LA PROPENSION par olivieram2
Source avec Zip Source .NET (Dotnet) PETITE LIBRAIRIE MATHÉMATIQUE par dodo7263
Source avec Zip Source .NET (Dotnet) INCLUSION D'UN POINT DANS UN CERCLE par eishtein

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) LISTER LES FICHIERS ET DOSSIER D'UN DOSSIER D'UN CLIC DROIT par D4rkTiger
Source avec Zip Source .NET (Dotnet) STRING AND DATE HELPERS par D4rkTiger
Source avec Zip Source .NET (Dotnet) QUANTUM BIBLIOTHÈQUE MATHÉMATIQUES par QuantumNet
Source avec Zip Source .NET (Dotnet) [XNA] CULTURE ASTEROIDS par Chiheb2010
Source avec Zip Source avec une capture Source .NET (Dotnet) ANIMATED WALLPAPER par g_ramzi

Commentaires et avis

Commentaire de econs le 09/06/2006 11:39:27 administrateur CS

Les complexes sont un sujet inépuisable d'utilisation et de familiarisation avec la programmation objet. C'est proprement codé. Bien joué.

Commentaire de kamalz le 09/06/2006 15:20:25

Trés bon code, c'est trés utile pour les applications math..le code est lisible, court et parfait..

Commentaire de SharpMao le 12/06/2006 15:39:29

Classique, mais bien réalisé.

Suggestion : surcharger les opérateurs +=, -+, *=, /=, == et !=.

Commentaire de LocalStone le 15/06/2006 00:42:12

Autre suggestion : gère les exceptions (en fait, là, comme ça, j'en voie qu'une : la division par un complexe nul)
++ !

Commentaire de drapeaunicolas le 19/02/2010 11:02:38

Il y a un problème avec l'argument : la fonction Atan donne un angle compris entre -pi/2 et pi/2 et donc l'argument proposé est faux pour les complexes dont la partie réelle est négative. La fonction Atan2 tient compte du signe de ses 2 arguments et permet donc de couvrir tous les cas.

À propos de la surcharge des opérateurs : C# ne permet pas de surcharger les opérateurs d'affectation (+= -= *= /=), ils sont automatiquement surchargés quand l'opérateur arithmétique correspondant l'est. En revanche, les opérateurs == et != seraient bien utiles, n'étant pas utilisables par défaut sur les struct.

Par ailleurs, j'ajouterais une conversion implicite de double vers Complexe pour pouvoir mélanger réels et complexes dans les expressions.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

CSharp.Net [ par PPA34 ] Bonjour, je voudrais savoir s'il existe un moyen d'insérer un "clearscreen" dans un programme en mode console ?Si oui, dites-moi comment ...Merci apercu et impression cSharp .net [ par lolhangman ] Bonjour, voila je suis super debutant en .net et cSharp et j'ai besoin d'imprimer le contenue d'une page. En fait tous mes resultats sont stoqu&#233;s csharp et .NET (redimentionnement d'element) [ par Co2r ] HelloJ'ai un petit probleme en csharp sous windows.Enfaite j'ai une fenetre composé de trois elements deux listBox cote a cote un à droite un à gauche CSharp .NET ressources [ par Ombitious_Developper ] Salut Tous :Je suis débutant en C#, je souhaite avoir un bonne ressource (cours, eBook, réfèrence, ...) pour bien démarrer en C# et .NETJe compte sur Utilité du CSharp/.NET [ par niceboy ] Slt,Quasiment personne n'a le Framework SDK d'installé sur son ordinateur.Et s'il faut obligatoirement l'installer pour pouvoir lancer, utiliser les p vb.net est-il développé en csharp ?? [ par hadhber ] vb.net est-il développé en csharp ?? program pour asp.net en csharp [ par zakaria90 ] bonjour a tous j'ai programmé un site web pour authentification , j'ai récupéré mon adresse mac pour l'authentification mais j'ai aucun idée pour ce p problème d'affichage sous Google crome d'une application .net [ par bettyinfo ] bonjour tt le monde j'ai une application .net qui marche bien dans le navigateur internet explorer hors dans google crome il y'a des div html qui s' Plugin .Net WPF [ par xmox667 ] Salut à tous, J'essaye de rendre modulaire une application WPF. Dans un assembly externe j'ai une classe et un datatemplate. Dans l'application hôt Afficher une fenêtre dans une autre en Csharp [ par nicolecastel ] [^^love3] Bonsoir Je suis débutante en Csharp et je suis entrain de développer une petite application,j'ai une fenêtre de démarrage "Form_Demarrage"


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales