begin process at 2010 09 03 07:32:05
  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é :9 934 / 218

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 ARBRE DE DÉCISION POUR RÉELS par deadhand
Source avec Zip Source avec une capture Source .NET (Dotnet) MISE SOUS FORME FNN D'UNE NOTATION POLONAISE par zakizaki7
RECHERCHE DE DEUX SOUS ENSEMBLE DONT LES SOMMES DES ÉLÈMENTS... par deadhand
Source avec Zip Source avec une capture Source .NET (Dotnet) METHODE GRAPHIQUE EN PROGRAMMATION LINÉAIRE par vindos
Source avec Zip Source avec une capture Source .NET (Dotnet) RECTANGLES par krissssss

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CALCUL RÉSEAU IP par nark07
Source avec Zip Source avec une capture Source .NET (Dotnet) CODE SOURCES TUTORIEL DÉTAILLÉ WSSF MODELING EDITION AVEC UN... par lefuturM
Source avec Zip REDIMENSION D'IMAGE EN C# par VinceMonkeyz
Source avec Zip Source avec une capture Source .NET (Dotnet) CRÉATION D'UN ACTIVEX EN UTILSANT UN USERCONTROL DOTNET CSHA... par AVerhamme
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 ?? Thread avec passage de .Net 1.1 en .Net 2.0 [ par JuS ] Bonjour,Je migre actuellement une application C# du framework 1.1 au framework 2.0. J'ai des warnings concernant deux méthodes qui sont maintenant obs csharp sous 98 (question a la con) [ par Moomoon07 ] J'ai fais une petite application en csharp sur XP et j'aimerais savoir si c'est possible de la faire tourner sous 98, et si oui comment ? (Je sais c'e pb de compilation sous Visial studio 2003 [ par ObiWanKennedy ] Bonjour je cherche à apprendre à programmer en C# je débute, apparament j'ai besoin d'inserer using  System.Net ; using  System. Dates [ par eldim ] Bonjour,Etant développeur VB.NET j'essai le C# pour me faire une petite DLL. Problème : en VB.NET on a une fonction de formatage de date qui n'existe


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

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,671 sec (4)

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