WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Evaluation des fonctions usuelles sur des variables complexes: algorithmisation des calculs et programmation

( Télécharger le fichier original )
par Ruffin Benoit NGOIE MPOY
Université pédagogique nationale - Licence en mathématique informatique 2008
  

Disponible en mode multipage

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

    0. INTRODUCTION

    0. 1. Problématique

    Les divers nombres sont apparus pour faire face à diverses nécessités notamment pour trouver des solutions à certaines équations jugées impossibles. Leur usage s'est généralisé en même temps que les règles qu'ils nécessitent se trouvaient mieux connues.

    Ainsi a-t-on vu apparaître les nombres relatifs, les nombres fractionnaires (rationnels), les nombres irrationnels. Chaque type de ces nombres répondait à un problème nouveau.

    Les nombres complexes, eux aussi, sont d'une grande importance dans la résolution des problèmes non pas seulement en mathématique pure mais aussi et surtout dans les mathématiques appliquées et les sciences physiques. Introduits dans les fonctions élémentaires usuelles, ces nombres confèrent auxdites fonctions de nouvelles propriétés.

    Par exemple, « la fonction exponentielle à variable complexe ez devient périodique, les fonctions sin z et cos z cessent d'être bornées, le logarithme des nombres négatifs (et, en général, de tout nombre complexe non nul) prend un sens ». (1(*))

    La grande question à se poser est la suivante :

    « Quels sont les algorithmes (opérations) à utiliser pour chaque type de fonctions pour en calculer la valeur numérique lorsque la variable principale est complexe ? »

    Toutefois, quoique ces algorithmes trouvés, se posera le problème de lenteur et aussi ne serons-nous pas à l'abri des erreurs. Ainsi, posons-nous la question :

    « Comment procéder ou que faire pour pallier aux difficultés liées à la lenteur et aux erreurs de calcul ? »

    Les réponses à ces deux questions feront l'objet de notre étude.

    0. 2. Hypothèses

    L'étude des fonctions multiformes dans le domaine complexe est d'une importance particulière car seule une telle étude permet d'expliquer la nature de leur multiformité. En effet, il y a possibilité de dégager sur certains exemples de fonctions multiformes des branches uniformes qui s'avèrent des fonctions analytiques.

    En outre, grâce au théorème de Gauss sur la nature du Corps C des nombres complexes, l'évaluation des fonctions numériques usuelles sur des valeurs complexes est rendue possible. Les opérations fondamentales définies sur des réels sont aussi valables pour des complexes.

    Ceci est une généralisation de la notion de fonctions à variables réelles aux variables complexes. Les nouvelles fonctions enrichies en propriétés (fonctions à variables complexes) sont un prolongement naturel des fonctions élémentaires usuelles en analyse au domaine complexe. Certes, comme l'avons-nous souligné plus haut, par un tel prolongement ces fonctions s'enrichissent parfois de nouvelles propriétés.

    Dans ce travail, nous allons proposer des algorithmes pour chaque type de fonctions afin d'en calculer la (les) valeur(s) lorsque la variable prend des valeurs complexes. (2(*))

    Ces algorithmes, bien entendu, donneront les résultats connus dans IR lorsque appliqués aux nombres complexes particuliers qui sont les réels.

    Enfin, en vue d'éviter la lenteur et les erreurs dans ces genres de calcul, nous avons pensé nécessaire qu'une fois les algorithmes trouvés, il faille automatiser le travail de calcul en concevant des programmes informatiques en langage Visual Basic.

    0. 3. Choix et Intérêt du sujet

    Face aux difficultés rencontrées dans l'évaluation des fonctions réelles sur des valeurs prises hors de leurs domaines de définition, nous avions pensé dans un premier temps que produire des algorithmes permettant d'évaluer des fonctions numériques usuelles sur des valeurs complexes allègerait bon nombre desdites difficultés. De plus, si la notion et l'essentiel sur les nombres complexes nous sont connus, il ne nous sera pas difficile de comprendre la démarche utilisée pour obtenir ces algorithmes.

    Vu la pertinence du problème et la contribution d'une telle étude dans la palliation des difficultés précitées, nous avons été tentés de traiter du sujet :

    « Evaluation de fonctions usuelles sur des variables complexes : Algorithmisation des calculs et programmation »

    Loin de nous l'idée de prétendre faire une étude systématique sur les fonctions et les nombres complexes - ce qui rendrait plus lourd et plus coûteux notre étude - nous osons croire que nos lecteurs trouveront à travers notre exposé des bases leur permettant de se familiariser à la recherche, à l'usage des algorithmes, aux méthodes de résolution et aux différents types de raisonnement.

    0. 4. Délimitation du sujet

    Comme l'a soutenu Makiadi Nzumba : «  l'étude des fonctions est une matière assez vaste ; elle recouvre plusieurs types de fonctions » (3(*))

    Nous n'allons pas étudier toutes les fonctions numériques mais allons nous limiter, moins que MAKIADI d'ailleurs, aux fonctions suivantes :

    Fonctions trigonométriques

    Fonctions trigonométriques réciproques

    Fonctions logarithmiques

    Fonctions exponentielles

    Fonctions hyperboliques

    Fonctions hyperboliques réciproques

    Pour des raisons de beauté et d'esthétique dans la présentation des résultats générés automatiquement, nous avons choisi de programmer nos algorithmes dans un langage orienté objet, ce qui nous a conduit au choix du langage Visual Basic.

    Par ailleurs, les algorithmes de certaines fonctions ne seront pas programmés parce que découlant de la composition des fonctions dont on a déjà l'algorithme et le code en Visual Basic. Cette restriction trouve sa justification par le fait qu'il faille limiter le volume du travail déjà très lourd au lieu de le surcharger avec des codes déductibles à partir des précédents. Les algorithmes de programmation ne tiendront compte que des arguments principaux des nombres complexes considérés. Ainsi au lieu d'avoir une infinité de résultats qui fera que notre programme ne s'arrête jamais nous n'aurons qu'un seul résultat mais sachant qu'il y en a plusieurs.

    0. 5. Méthodes et techniques utilisées

    Comme le souligne Badaga (2003), « les méthodes et techniques sont des procédés opératoires rigoureux bien définis, transmissibles, susceptibles d'être appliqués à nouveau dans les mêmes conditions et adaptés au genre de problème et des phénomènes en cause ». (4(*))

    Dans notre étude, nous avons opté pour deux méthodes :

    - La méthode normative (dite aussi descriptive) : Il nous sera donné de décrire les faits suivant un certain nombre de normes.

    - La méthode déductive : Il nous arrivera quelques fois de tirer une conclusion particulière à partir d'une situation générale.

    Quant aux techniques, nous nous sommes contenté de la documentation (technique documentaire) : nous avons tiré certaines notions et informations dans les bouquins et manuels en notre possession ou dans des bibliothèques.

    0. 6. Subdivision du travail

    Les connaissances scientifiques, si véridiques soient-elles, ne sont que très peu convaincantes si elles sont mal présentées. Pour éviter de tomber dans ce vice, nous avons jugé bon de présenter notre travail en trois chapitres qui sont les suivants :

    Le premier chapitre consacré à l'ensemble C des nombres complexes donne une ébauche de notre travail. En effet, dans le souci de rendre plus clair et plus compréhensible le présent travail, nous nous sommes donné la peine de définir et expliquer certaines notions liées aux nombres complexes.

    le deuxième chapitre quant à lui traite des fonctions à variables complexes. Ici, nous abordons déjà le vif du sujet de notre étude. Nous y avons utilisé les règles usuelles de calcul sur les nombres complexes pour définir des fonctions, connues à variables réelles, sur des nombres complexes.

    Le troisième chapitre intitulé « Algorithmes et programmation » est le plus important de notre travail. Il met en oeuvre les résultats trouvés dans les chapitres précédents et sera donc la clé de validité de notre étude. C'est dans ce chapitre que le lecteur pourra se rendre compte de l'extension des réels aux complexes après viendra l'automatisation des calculs (programmation).

    Chapitre I : Le Corps C des nombres complexes

    I. 1. Historique des nombres complexes

    I. 1. 1. Formule de Cardan

    Au 16ème siècle, des mathématiciens italiens de la Renaissance travaillèrent sur la résolution des équations du troisième degré. Afin de calculer des solutions, réelles pour certaines, ils furent amenés à introduire des nombres non réels. (5(*))

    En 1545, Jérôme Cardan (6(*)) publie l'Ars Magna dans lequel il fournit des formules de résolution d'une équation de la forme avec p et q des entiers strictement positifs. Il développe et complète des méthodes empruntées à Nicolo Tartaglia et découvre que :

    Si alors le réel positif est solution de l'équation.

    Dans cette formule, le nombre noté , pour dans [0, +8[, est le nombre positif qui, élevé au cube, donne . On l'appelle « racine cubique de  »

    I. 1. 2. L'audace de Bombelli

    Imposant à l'équation de CARDAN les conditions p=15 et q=4, Bombelli montre que la solution de l'équation peut s'écrire :

    ,

    mettant en évidence le fait que des nombres réels peuvent être désignés par des expressions « imaginaires ». Prendre la racine carrée d'un négatif, il fallait oser !

    Mais comme cette audace permet d'obtenir des résultats, les imaginaires sont de plus en plus utilisés avec confiance.

    I. 1. 3. Apport des autres mathématiciens

    Au milieu du 18ème siècle, Euler propose de remplacer par i, donc i2 = -1, et d'Alembert montre que tous les imaginaires inventés, que GAUSS appellera plus tard nombres complexes, sont de la forme avec x et y des réels.

    C'est par l'intermédiaire de ces nombres que Raphaël Bombelli retrouva une des solutions réelles de l'équation . L'introduction du nombre i semble alors justifiée algébriquement. Conjointement, il énonce les règles de calcul sur ces nombres. L'apparition au 16ème siècle de ces nouveaux nombres entraîna de vives polémiques.

    En 1637, Descartes leur donna le nom d'imaginaires. Il fallut attendre deux siècles pour qu'ils obtiennent de la communauté mathématique un réel statut.

    I. 2. Définition de C

    I. 2. 1. Définition : On munit l'ensemble IR2 des deux lois suivantes :

    Proposition

    Muni de ces deux lois, IR2 possède une structure de Corps. Plus précisément :

    Le neutre pour la loi + est

    L'opposé de est

    Le neutre pour la loi (le produit) est

    Pour tout non nul, l'inverse de z est

    Définition : On note C l'ensemble IR2 muni des deux lois précédentes. Ses éléments sont appelés nombres complexes.

    Proposition :

    L'ensemble est un sous - corps de C. L'application est un isomorphisme de corps IR sur IK.

    Conséquence

    De cette manière apparaît comme un sous - corps de. Cet isomorphisme permet d'identifier le complexe avec le réel.

    I. 2. 2. Notation cartésienne

    Dans le corps, on note i =. Pour tout de C, on constate que. Avec l'identification de IR avec un Sous - Corps de C, on peut écrire . On a ainsi obtenu la notation cartésienne (ou algébrique) des nombres complexes.

    Définitions : Pour tout z de C, il existe un couple unique de IR2 tel que. Le réel x est appelé partie réelle de z et est noté Re(z), le réel y est appelé partie imaginaire de z et est noté Im(z).

    Un nombre complexe est dit réel si Im(z) = 0, z est dit imaginaire pur si Re(z) = 0, c'est-à-dire si z = i y, avec y réel.

    Remarques

    · Soient et deux nombres complexes, avec. Les lois de C s'écrivent maintenant :

    · (On identifie les parties réelles et les parties imaginaires)

    En particulier : (attention à vérifier que x et y sont réels)

    Puissance du nombre i

    On constate que i2= -1. Donc. En fait, . Plus généralement i3= - i et i4= 1. Le Sous - Groupe engendré par i est cyclique d'ordre 4 :

    Remarque

    Si est un complexe non réel, alors on peut encore effectuer l'identification suivante :

    I. 2. 3. Conjugaison

    Définition : Soit (x et y réels) un nombre complexe quelconque. Le nombre complexe est appelé le conjugué de z. On nomme conjugaison l'application de C dans C définie par.

    Proposition : La conjugaison est un automorphisme involutif du corps (C,+,?). Cela signifie que :

    ·

    · Propriétés

    · Pour tous complexes ,

    · Pour tout z complexe :

    · z est réel

    · z est imaginaire pur

    I. 2. 4. Module

    Définition : Soit un nombre complexe quelconque. On appelle module de z la quantité notée égale à .

    Remarques :

    On constate que (utile pour se « débarrasser » du module).

    En particulier, si z est non nul, l'inverse de z est.

    Si z est réel, le module de z est égal à sa valeur absolue. Les notations (valeur absolue ou module) sont donc compatibles.

    Propriétés :

    L'application « module » vérifie les propriétés suivantes :

    Pour tous de C:

    · . Si z est non nul,

    · . Il y a égalité

    · . Si

    Conséquence : (C,) est un espace normé.

    · · Généralisation :

    Pour tous complexes

    En particulier,

    On a les zk sont produits de l'un d'entre eux par des réels positifs.

    Proposition

    L'ensemble U des nombres complexes de module 1 est un sous-groupe de Pour tout z de U,

    Proposition (Distance dans C)

    Soit d l'application C x C vers IR, définie par :

    d est une distance sur C, ce qui signifie qu'elle vérifie les propriétés suivantes :

    Pour tous nombres complexes u, v et w :

    · · · (Inégalité triangulaire)

    I.2.5. Fonctions à valeurs complexes

    Soit X un ensemble quelconque non vide. F(X, C) désigne l'ensemble des applications définies sur X et à valeurs complexes. Le plus souvent X désignera un intervalle de IR, ou l'ensemble IN (dans ce cas, on obtient l'ensemble des suites à valeurs complexes)

    On sait que F(X, C) est un anneau commutatif pour les lois déduites de C, et définies par :

    F(X,C),

    Le neutre de F(X,C) pour la loi + (respectivement la loi .) est l'application constante 0 (respectivement 1)

    Si f appartient à F(X, C), on définit les éléments de F(X, C) :

    On a pour les opérations « partie réelle », « partie imaginaire », « conjugaison » et « module », des propriétés dans F(X,C) analogues à celles qui ont été rencontrées dans C.

    I.3. Argument, Exponentielle complexe

    I.3.1. Notation eiè

    Définition :

    Une des fonctions principales pour l'analyse des équations différentielles et pour d'autres idées mathématiques non citées est l'exponentielle : le familier ex.

    Que vaut cette fonction pour des valeurs complexes en exposant ?

    Pour

    Ceci signifie que tout ce que nous avons à faire est de rechercher la valeur de l'exponentielle purement imaginaire et le cas général n'est alors juste qu'un produit.

    Il y a plusieurs manières de le calculer telles que celle que nous proposons ci-dessous :(7(*))

    Quelle que soit la valeur de eiy, elle a une partie réelle et une partie imaginaire.

    Maintenant en vue de trouver les fonctions et, trouvons une équation différentielle qui les satisfait. Dérivons cette équation par rapport à y.

    Or (1)

    D'où

    Identifions les parties réelles et imaginaires,

    et (2)

    Nous pouvons résoudre les équations différentielles simultanées de plusieurs manières, et ici la manière la plus simple est d'éliminer une des fonctions inconnues entre elles. Dérivons la première équation et éliminons.

    Alors (3)

    L'équation (3) est l'équation standard d'oscillateur harmonique. Ainsi, la solution est la combinaison de sinus et cosinus.

    (4)

    Trouvons les constantes inconnues A et B en utilisant les conditions initiales sur et ces valeurs proviennent de la valeur de eiy à zéro.

    Ainsi,

    Ceci détermine queet alors l'équation (2) détermine que . Mettons-les ensembles et obtenons la formule d'Euler.

    Quelques cas spéciaux donnent :

    et

    En effet,. Ainsi la fonction exponentielle est une fonction périodique dans la direction imaginaire.

    Calculons. Exprimons dans la forme polaire, ou mieux . Ce qui vaut :

    Théorème :

    L'application est un morphisme surjectif du groupe (IR, +) dans le groupe (U, .) des nombres complexes de module 1, de noyau  :

    · · · U (c'est-à-dire ),

    · Propriétés

    · L'application est 2ð-périodique :

    · · Valeurs particulières :

    I.3.2. Formules de Moivre et d'Euler

    Proposition (Formule de Moivre)

    Pour tout réel è, et pour tout entier n .

    Autrement dit :

    Proposition (Formule d'Euler)

    Pour tout réel è :

    (1)

    (2)

    (1) + (2) : et

    (1) - (2) : et

    Utilisation

    · « Moivre » permet, en développant et en identifiant les parties réelles et imaginaires, d'exprimer et/ou

    · Les formules d'Euler permettent, par utilisation de la formule du binôme et regroupement des termes équidistants des extrémités, de linéariser et, pour c'est-à-dire de les exprimer en fonction de quantités du type et/ou.

    I.3.3. Forme trigonométrique

    Définition

    Soit . Il existe une unique classe des réels définies modulo 2ð, telle que. Cette classe de réels modulo 2ð est appelée l'argument de z.

    Chacun des réels è de cette classe est appelé une détermination de l'argument de z (ou, par abus de langage, un argument de z), et on note : arg z = è  (2ð).

    Remarque

    L'argument d'un nombre complexe non nul z possède une unique détermination dans tout intervalle, et en particulier dans les intervalles et.

    Proposition

    Tout nombre complexe non nul s'écrit de manière unique, avec et. est le module de z et è  est une détermination de l'argument de z. On dit que est écrit sous forme trigonométrique.

    Remarques

    · , avec et è  réel quelconque. Parler de l'argument de 0 n'a donc pas aucun sens.

    · Soit. Alors :

    et

    Si (ce qui détermine è  modulo ð)

    Si (ce qui détermine è  modulo 2ð)

    · Si , mais si on n'est pas certain du signe du réel  :

    Argument et opérations dans C

    Soient u et v, no nuls : et .

    . En particulier :

    . En particulier :

    . En particulier :

    . En particulier :

    . En particulier :

    Argument et cas particuliers

    Soit un nombre complexe non nul :

    est réel

    est imaginaire pur

    I.3.4. Fonction exponentielle complexe

    Définition

    Soit (avec IR) un nombre complexe. On pose , encore noté exp z. On définit ainsi une application de C dans C, appelée exponentielle complexe.

    Remarques

    La restriction à IR de la fonction est l'exponentielle réelle déjà connue. Sa restriction aux imaginaires purs est : définie précédemment.

    Pour tout nombre complexe (avec IR) : . Ainsi

    Propriétés

    Pour tous nombres complexes z et z' :

    tel que (en particulier exp 0 = 1)

    et

    tel que

    L'application exponentielle est donc périodique de période .

    Résolution de l'équation exp z = a

    Soit un nombre complexe non nul (est le module de a). Pour tout nombre complexe (avec IR)

    L'équation exp z = a possède donc une infinité de solutions. Toutes se déduisent de l'une d'entre elles par ajout d'un multiple entier de .

    Remarques

    D'après les résultats précédents, l'application exponentielle est un morphisme surjectif du groupe (C,+) sur le groupe (C,? ) dont le noyau est Z

    L'équation exp z = a (a non nul, cherché sous la forme ) possède une solution unique si on se limite à (par exemple , ou ).

    I.4. Equations polynomiales dans C

    I.4.1. Théorème de d'Alembert

    Théorème

    Tout polynôme non constant (c'est - à - dire de degré supérieur à 0) à coefficients complexes, admet au moins une solution dans C.

    Conséquence

    Tout polynôme P non constant à coefficients dans C se factorise en un produit de polynôme du 1er degré. Le nombre de racines de P est donc n, chacun étant compté autant de fois que sa multiplicité.

    Racines complexes d'un polynôme à coefficients réels

    Soit P = anxn + an-1xn-1 + ... + a1x + a0 un polynôme à coefficients réels. Soit une racine non réelle de P, avec la multiplicité m. Alors est une racine de P avec la même multiplicité.

    I.4.2. Racines carrées d'un complexe non nul

    Proposition

    Tout nombre complexe non nul z admet exactement 2 racines carrées, qui sont opposées. La méthode est la suivante, en posant et en cherchant sous la forme

    du signe de

    Alors

    I.4.3. Racines n-ièmes d'un nombre complexe non nul

    Définition

    Soit z un nombre complexe non nul, et n un entier naturel non nul. On appelle racine n-ième de Z tout nombre complexe z tel que zn=Z.

    Proposition

    Soit la forme trigonométrique de (avec ), possède exactement n racines n-ièmes données par :

    La méthode est la suivante, en cherchant z sous la forme .

    Remarques

    Les points images Mk de ces n racines n-ièmes sont les sommets d'un polygone régulier convexe inscrit dans le cercle de centre 0 et de rayon

    Les n racines n-ièmes de apparaissent dans la factorisation

    En particulier, par identification des termes de degré n-1 et des termes constants :

    · La somme des n racines n-ièmes de est nulle (si n >1)

    · Leur produit vaut

    I.4.4. Racines n-ièmes de l'unité

    On appelle racines n - ièmes de l'unité les racines n - ièmes dans C du nombre 1. Elles sont données par avec . Si on note alors pour tout (en particulier ).

    Chapitre 2 : Fonctions à variables complexes

    Nous traiterons dans ce chapitre des fonctions que nous connaissons déjà, définies sur des variables réelles. Dans notre nouvelle démarche, nous recherchons des algorithmes pour définir lesdites fonctions sur des nombres complexes. Notons que les algorithmes que nous proposerons doivent produire des résultats aussi vrais pour des complexes en général que pour des réels (qui sont des cas particuliers des nombres complexes).

    Les fonctions que nous traiterons sont les suivantes :

    1. Fonctions exponentielles

    2. Fonctions logarithmiques

    3. Fonctions trigonométriques

    4. Fonctions trigonométriques réciproques

    5. Fonctions hyperboliques

    6. Fonctions hyperboliques réciproques

    2.1. Fonctions exponentielles

    On appelle fonction exponentielle de base a la fonction y = ax où a est un nombre positif différent de 1 et x la variable indépendante.

    André Antibi et Raymond Barra définissent la fonction exponentielle comme « La fonction définie sur IR qui à chaque réel x associe le nombre ex, dont le logarithme népérien est x »(8(*))

    Il est clair que Antibi et Barra appellent « fonction exponentielle » seule la fonction y = ax où a = e avec

    Plusieurs autres auteurs des livres surtout utilisés au cycle secondaire ont épousé cette définition à l'instar de Jean - Paul Beltramone(9(*)), Joël Malaval, Denise Courbon. (10(*))

    D'autres auteurs par contre préfèrent l'expression «  fonction exponentielle de base a » pour éviter toute confusion. C'est le cas de Lucien Chambadal (1968) et Nicolas Schons.

    Pour la simple raison que l'expression « fonction exponentielle de base a » englobe l'autre expression qui sous-entend la base e, nous adopterons l'expression « fonction exponentielle » pour exprimer les fonctions :

    f

    {

    } avec a > 0

    1

    :

    +

    -

    IR

    a

    avec

    a

    x

    IR

    IR

    x

    a

    Pour étendre cette notion aux nombre complexes, on s'appuiera sur l'égalité adoptée plus haut dans les pages précédentes (2.1) où est donné en radian. L'équation (2.1) est la forme exponentielle du nombre complexe

    Ainsi, pour définir

    avec , On fera des transformations suivantes :

    Exemples :

    1. 23+i = 23 . [cos(ln 2) + i sin(ln 2)]

    2. 45+0i = 45 = 45 . [cos(0 ln 4) + I sin(0 ln 4)] = 45 [cos 0 + I sin 0] = 45 = 1024

    2.2. Fonctions Logarithmiques

    Ici, nous ne nous limiterons qu'à l'étude des logarithmes népériens (naturels). L'expression d'autres logarithmes se fera facilement en appliquant la formule de changement de base :

    En effet, avec a > 1, b > 1

    2.2.1. Définition de la fonction logarithmique

    Soit a > 1 et n IR_*. On appelle logarithme à base a du réel n le nombre réel b tel que ab = n.

    Lorsque la base a = 10, on dit qu'il s'agit du logarithme décimal ou logarithme vulgaire ou encore logarithme briggsien que l'on note simplement log n.

    Lorsque la base a = e, on dit qu'il s'agit du logarithme népérien que l'on note ln n au lieu de loge n.

    e est le nombre de Néper (11(*)) obtenu comme somme de la série

    2.2.2. La fonction logarithme népérien

    La fonction logarithme (ici à base e) n'est définie que pour des réels strictement positifs. Essayons d'abord de l'évaluer pour des réels strictement négatifs.

    a. Logarithmes des nombres négatifs

    Soit a > 0, calculons ln (-a).

    En effet, ln (-a) = ln (-1. a) = ln (-1) + ln a = ln eip + ln a = ip + ln a

    Exemple : ln (-2) = ln 2 + ip

    b. Logarithmes des nombres complexes

    Soit un nombre complexe. Déterminons son logarithme naturel.

    et

    Ainsi

    Exemple :

    2.3. Fonctions trigonométriques

    Parmi les fonctions trigonométriques, nous n'étudierons que les fonctions sinus et cosinus, les autres étant facilement déductibles à partir des deux premières.

    2.3.1. Fonction sinus

    Le domaine de valeurs de la fonction sinus est [-1, 1] et son domaine de définition est IR.

    Pour étendre cette notion et exprimer les sinus des nombres complexes on se servira de la formule :

    et

    Nous voulons donc avoir les fonctions de la forme

    En effet,

    2.3.2. Fonction cosinus

    Comme la fonction sinus, la fonction cosinus est définie pour tout réel et son domaine de valeurs est [-1, 1].

    Pour la définir sur des complexes, on procède comme suit :

    2.4. Fonctions trigonométriques réciproques

    Vu que nous n'avons étudié que deux fonctions trigonométriques dans le paragraphe précédent, nous ne nous limiterons ici qu'aux seules fonctions réciproques de sinus et cosinus, c'est-à-dire les fonctions arcsin et arccos.

    2.4.1. Fonction arc sinus

    Son domaine de définition est [-1, 1]. Essayons d'évaluer cette fonction pour n'importe quelle valeur réelle. On obtiendrait une fonction de la forme :

    Voici comment nous pourrons procéder :

    0

    2

    1

    2

    2

    sin

    sin

    =

    -

    -

    =

    -

    =

    -

    =

    =

    -

    -

    x

    i

    e

    e

    x

    i

    e

    e

    x

    i

    e

    e

    x

    y

    y

    x

    arc

    iy

    iy

    iy

    iy

    iy

    iy

    Multiplions les deux membres par eiy. On a donc :

    Posons eiy = z, l'équation devient :

    qui est une équation du second degré à constantes complexes.

    Exemple : Calculer arc sin 2

    Soit

    Posons eix = z

    z2 - 4z - 1 = 0

    3

    2

    12

    )

    1

    (

    )

    1

    (

    4

    )

    4

    (

    2

    i

    i

    =

    -

    =

    -

    -

    -

    =

    Pour , on a :

    Avec

    Pour , on a :

    Avec

    Ainsi,

    Prolongement de la fonction arc sin aux nombres complexes

    Nous voulons avoir une fonction de la forme :

    avec

    Soit un nombre complexe,

    Multiplions les deux membres par

    Posons , l'équation devient :

    L'équation ci - dessus est une équation du second degré à coefficients complexes.

    2.4.2. Fonction arc cos

    Le domaine de définition de cette fonction est [-1, 1]

    Evaluation de la fonction arc cos sur toute valeur réelle

    Soit , déterminons

    Posons , on a

    Ainsi,

    Pour , l'équation devient :

    qui est une équation du second degré à coefficients réels.

    Exemple : Calculons arc cos 2

    L'équation résolvante est

    et

    Pour on a :

    Pour on a :

    Prolongement de la fonction arc cos aux nombres complexes

    Soit un nombre complexe,

    Multiplions les deux membres par

    Posons , l'équation devient :

    L'équation ci - dessus est une équation du second degré à coefficients complexes.

    2.5. Fonctions hyperboliques

    Comme pour des fonctions trigonométriques et trigonométriques réciproques, ici aussi nous n'étudierons que les fonctions sh et cosh (sinus hyperbolique et cosinus hyperbolique)

    2.5.1. Fonction sh

    Nous voulons avoir une fonction de la forme :

    Par définition,

    Par extension aux nombres complexes, on a :

    )

    1

    (

    sin

    2

    iz

    i

    e

    e

    z

    sh

    z

    z

    -

    =

    -

    =

    -

    Posons

    devient

    Appliquons la formule de sinus :

    2.5.2. Fonction ch

    Procédons de la même manière pour avoir

    Par définition,

    Par extension aux nombres complexes, on a :

    iz

    e

    e

    z

    ch

    z

    z

    cos

    2

    =

    +

    =

    -

    Posons . On obtient

    Appliquons la formule de cosinus.

    2.6. Fonctions hyperboliques réciproques

    Les lignes qui suivent présentent une étude des fonctions arch (arc cosinus hyperbolique) et arsh (arc sinus hyperbolique).

    2.6.1. Fonction arsh

    Voici comment nous pourrons procéder pour calculer arsh(a+ bi) :

    Il suffit de poser .

    L'équation devient .

    2.6.2. Fonction arch

    Calculons arch (a+b i):

    Posons

    L'équation devient .

    Chapitre 3 : Algorithmes et programmation

    3.1. Algorithme

    Les mathématiciens définissent un algorithme comme une méthode de résolution d'un problème suivant un enchaînement déterminé de règles opératoires (12(*))

    En informatique, nous le définissons comme un procédé mis en oeuvre sur un ordinateur, et qui, répété autant de fois qu'il est nécessaire, permet d'obtenir le résultat cherché.

    Le mot algorithme n'est pas dérivé d'un mot latin ou grec, mais d'une contraction et d'une dérivation du nom du mathématicien arabe Al - Khwarizmi qui publia deux livres importants : l'un sur l'arithmétique et l'autre sur « l'action de faire passer et d'agencer les parties d'un tout » (13(*))

    Trois siècles plus tard, le livre, traduit en latin, porta le nom « Algorismus ».

    La première définition du mot algorithme dans son sens actuel a été donnée par le mathématicien russe Markov : « Tout ensemble de règles précises destiné à obtenir un résultat déterminé à partir de certaines données initiales »

    Les algorithmes sont constitués d'un ensemble de règles précises et compréhensibles par tous. Ils s'appliquent à des données qui peuvent changer, élaborent des résultats en fonction des données initiales.

    La réalisation d'un algorithme est un acte créatif : Il n'existe pas de méthode pour découvrir un algorithme.

    Dans ce travail, nous présenterons un nombre d'algorithmes en langage humain permettant d'évaluer quelques fonctions usuelles sur des valeurs complexes puis nous allons plus tard traduire ces algorithmes en langage de programmation Visual BASIC.

    3.1.1. Calcul de l'exponentielle d'un nombre complexe

    Soit à calculer

    0. Début

    1. Initialisation

    2. Lire a, x, y

    3. Calculer

    4. Ecrire R, `+ `, I, ` i `

    5. Fin

    3.1.2. Calcul de logarithmes des nombres complexes

    Soit à calculer Log (a + b i)

    0. Début

    1. Initialisation

    2. Lire a, b

    3. Calculer

    4. Ecrire R, `+ `, I, ` i `

    5. Fin

    3.1.3. Calcul de Sinus de nombres complexes

    Soit à calculer Sin (a + b i)

    0. Début

    1. Initialisation

    2. Lire a, b

    3. Calculer

    4. Ecrire R, `+ `, I, ` i `

    5. Fin

    3.1.4. Calcul de Cosinus de nombres complexes

    Soit à calculer Cos (a + b i)

    0. Début

    1. Initialisation

    2. Lire a, b

    3. Calculer

    4. Ecrire R, `+ `, I, ` i `

    5. Fin

    3.1.5. Calcul de l'Arc sinus de nombres complexes

    Soit à calculer Arcsin (a + b i)

    0. Début

    1. Lire a, b

    2. Poser

    3. Résoudre l'équation

    4. Résoudre les équations

    x

    i

    e

    z

    =

    5. Fin

    3.1.6. Calcul de l'Arc cosinus de nombres complexes

    Soit à calculer Arcos (a + b i)

    0. Début

    1. Lire a, b

    2. Poser

    3. Résoudre l'équation

    4. Résoudre les équations

    x

    i

    e

    z

    =

    5. Fin

    3.1.7. Calcul de Sinus hyperbolique de nombres complexes

    Soit à calculer Sh(a + b i)

    0. Début

    1. Initialisation

    2. Lire a, b

    3. Calculer

    4. Ecrire R, `+ `, I, ` i `

    5. Fin

    3.1.8. Calcul de Cosinus hyperbolique de nombres complexes

    Soit à calculer Cosh(a + b i)

    0. Début

    1. Initialisation

    2. Lire a, b

    3. Calculer

    4. Ecrire R, `+ `, I, ` i `

    5. Fin

    3.1.9. Calcul de l'Arc sinus hyperbolique de nombres complexes

    Soit à calculer Arsh (a + b i)

    0. Début

    1. Lire a, b

    2. Poser

    3. Résoudre l'équation

    4. Résoudre l'équation

    5. Fin

    3.1.10. Calcul de l'Arc cosinus hyperbolique de nombres complexes

    Soit à calculer Arch (a + b i)

    0. Début

    1. Lire a, b

    2. Poser

    3. Résoudre l'équation

    4. Résoudre l'équation

    5. Fin

    3.2. Les principaux concepts de Visual Basic

    3.2.1. Présentation générale

    Visual Basic est un langage de programmation « orienté objet » de Microsoft qui permet de programmer des applications indépendantes sous l'environnement Windows.

    Il est intégré dans tous les logiciels de Bureautique de MicroSoft (Word, Excel, Access) sous le nom de : VBA (Visual Basic Application). Visual Basic est un langage interprété.

    Pour comprendre le processus de développement d'une application, il est utile d'assimiler certains concepts sur lesquels est fondé Visual Basic. Comme il s'agit d'un langage de développement Windows, il convient également de s'être familiarisé avec l'environnement Windows. Le fonctionnement de Windows s'articule autour de trois concepts essentiels. A savoir :


    · les fenêtres ;


    · les événements ;


    · les messages.

    Considérons qu'une fenêtre est une zone rectangulaire dotée de ses propres limites. Nous connaissons tous une fenêtre de document dans un programme de traitement de texte ou une fenêtre de boite de dialogue quelconque. S'il s'agit là des exemples les plus courants, il existe bien d'autres types de fenêtres. Un bouton de commande, les icônes, les zones de texte, les boutons d'options, les barres de menus constituent tous des fenêtres.

    Windows gèrent ces nombreuses fenêtres en affectant à chacune d'elles un numéro d'identification unique (« hWnd »). Le système surveille en permanence chacune de ces fenêtres de façon à déceler le moindre événement. Les événements peuvent être engendrés par des actions de l'utilisateur, par un contrôle programmé, voire par des actions d'une autre fenêtre.

    Chaque fois qu'un événement survient, un message est envoyé au système d'exploitation, qui traite le message et le diffuse aux fenêtres concernées.

    La plupart de ces messages de bas niveau sont gérés par Visual Basic tandis que d'autres sont mis à votre disposition sous forme de procédures événementiels.

    Dans une application « événementielle », le code ne suit pas un chemin prédéterminé. Différentes sections du code sont exécutées en fonction des événements qui se produisent. Nous ne pouvons donc pas prévoir l'ordre des événements, en revanche nous devons prévoir les événements qui peuvent se produire et votre code doit être en mesure de les traiter.

    3.2.3. La notion d'objet

    Un objet représente un élément d'une application. Une feuille de calcul, une cellule, un graphique pour Excel, un formulaire, une table ou un état pour Access sont des objets. Dans un code Visual Basic, nous devons identifier un objet avant de pouvoir appliquer l'une des méthodes de l'objet ou modifier la valeur de l'une de ses propriétés.

    Une collection est un objet contenant plusieurs autres objets, généralement, mais pas toujours, du même type. Dans Microsoft Excel, par exemple, l'objet Workbooks contient tous les objets Workbook. Dans Visual Basic, la collection Forms contient tous les objets Form d'une application. Les éléments d'une collection peuvent être identifiés par numéro ou par nom. Nous pouvons également manipuler toute une collection d'objets si les objets partagent des méthodes communes.

    3.2.4. Les notions de méthode et de propriété

    Une méthode est une action qu'un objet peut exécuter. Par exemple, Add est une méthode de l'objet ComboBox qui ajoute une nouvelle entrée à une liste modifiable.

    Une propriété est un attribut d'un objet définissant l'une des caractéristiques de l'objet telle que la taille, la couleur ou la position à l'écran, ou un aspect de son comportement, par exemple s'il est activé ou visible. Pour changer les caractéristiques d'un objet il faut changer les valeurs de ses propriétés.

    Pour définir la valeur d'une propriété, nous faisons suivre la référence d'un objet d'un point, du nom de la propriété, d'un signe égal (=) et de la nouvelle valeur de propriété.

    Certaines propriétés ne peuvent pas être définies. La rubrique d'aide de chaque propriété indique si vous pouvez la définir (lecture - écriture), seulement la lire (lecture seule) ou seulement y écrire (écriture seule). Nous pouvons extraire des informations sur un objet en renvoyant la valeur de l'une de ses propriétés.

    3.2.5. La syntaxe de Visual Basic

    Un programme écrit en Visual Basic est un ensemble de fichiers textes documentés (appelés sources) respectant une syntaxe précise.

    Les commentaires sont des caractères, de préférence non accentués, ignorés par l'interpréteur et ne servant qu'à documenter le programme. Les lignes de commentaires débutent par une apostrophe (') ou par le mot Rem suivi d'un espace et peuvent être insérées n'importe où dans une procédure. Les commentaires peuvent expliquer une procédure ou une instruction particulière au lecteur du code. Par défaut, les commentaires s'affichent en vert.

    Règles d'affectation des noms

    Nous utilisons les règles suivantes pour nommer des procédures, des constantes, des variables et des arguments dans un module Visual Basic :

    · Utiliser une lettre comme premier caractère ;

    · Ne pas utiliser d'espace, de point (.), de point d'exclamation (!) ou les caractères @, &, $, # dans le nom ;

    · Un nom ne peut compter plus de 255 caractères ;

    · Généralement, on ne devrait pas utiliser des noms identiques aux noms de fonction, d'instruction et de méthode de Visual Basic. Nous ferions,dans ce cas, double emploi des mots clés du langage. Pour utiliser une fonction, une instruction ou une méthode du langage intrinsèque en conflit avec un nom attribué, nous devons l'identifier explicitement. Faire précéder la fonction, l'instruction ou la méthode intrinsèque du nom de la bibliothèque de types associée.

    Par exemple, si nous avons une variable nommée Left, pour invoquer la fonction Left, nous devons employer VBA.Left ;

    Nous ne pouvons pas employer deux fois le même nom au même niveau de portée. Par exemple, nous ne pouvons pas déclarer deux variables nommées age dans la même procédure.

    Cependant, nous pouvons déclarer une variable privée nommée age et une variable de niveau procédure nommée age dans le même module.

    Note : Visual Basic ne différencie pas les majuscules des minuscules, mais conserve la casse dans l'instruction de déclaration du nom.

    3.2.6. Les types de données

    Les types prédéfinis

    Boolean

    Les variables de type « Boolean » sont stockées sous la forme de nombres de 16 bits (2 octets), mais elles ne peuvent avoir pour valeur que True ou False. Elles s'affichent sous la forme True et False (avec l'instruction Print) ou #TRUE# et #FALSE# (avec l'instruction Write #). On utilise les mots clés True et False pour faire passer d'un état à l'autre des variables de type « Boolean ».

    Lorsque d'autres types de données numériques sont convertis en valeurs de type Boolean, 0 devient False et toutes les autres valeurs deviennent True. Lorsque des valeurs de type Boolean sont converties en d'autres types de données, False devient 0 et True devient -1.

    Byte

    Les variables de type « Byte » sont stockées sous la forme d'un nombre de 8 bits (1 octet unique), non signé, compris entre 0 et 255. Le type de données « Byte » est utile pour le stockage d' entiers de petite taille.

    Currency

    Les variables de type « Currency » sont stockées sous la forme de nombres de 64 bits (8 octets) au format entier, avec un décalage de 10 000 afin d'obtenir un nombre à virgule fixe comprenant 15 chiffres à gauche du séparateur décimal et 4 chiffres à droite.

    Cette représentation offre une plage comprise entre -922 337 203 685 477,5808 et 922 337 203 685 477,5807. Le caractère de déclaration de type pour les variables de type « Currency » est le signe @. Le type de données « Currency » est utile pour les calculs monétaires et pour les calculs à virgule fixe dans lesquels la précision revêt une importance particulière.

    Date

    Les variables de type « Date » sont stockées sous la forme de nombres à virgule flottante de 64 bits (8 octets) IEEE représentant des dates comprises entre le 1er janvier 100 et le 31 décembre 9999, et des heures allant de 0:00:00 à 23:59:59. Toute valeur de littéral de date peut être attribuée à une variable de type « Date ». Les littéraux date doivent être délimités par le signe #, par exemple #January 1, 1993# ou #1 Jan 93#.

    Les variables de type « Date » affichent les dates au format de date abrégé reconnu par un ordinateur. Les heures s'affichent au format horaire (plage de 12 ou 24 heures) défini dans un ordinateur.

    Lorsque d'autres types de données numériques sont convertis en données de type « Date », les valeurs situées à gauche du séparateur décimal représentent la date, tandis que celles situées à droite correspondent à l'heure. Minuit est représenté par 0 et midi par 0,5. Les nombres entiers négatifs représentent des dates antérieures au 30 décembre 1899.

    Decimal

    Les variables de type « Decimal » sont stockées sous la forme d'entiers de 96 bits (12 octets), non signés, décalés d'une puissance de 10 variable. Le facteur de décalage (puissance de 10), qui définit le nombre de chiffres situés à droite du séparateur décimal, est compris entre 0 et 28. Avec un décalage de 0 (pas de décimales), la valeur maximale est +/- 79 228 162 514 264 337 593 543 950 335. Avec 28 décimales, la valeur maximale est +/- 7,9228162514264337593543950335 et la valeur minimale différente de zéro est +/- 0,0000000000000000000000000001.

    Pour le moment, le type de données « Decimal » ne peut être utilisé qu'avec une donnée de type « Variant ». En d'autres termes, il est impossible d'attribuer à une variable le type « Decimal ». Nous pouvons en revanche créer une variable de type « Variant » dont le sous-type est « Decimal » à l'aide de la fonction CDec.

    Double

    Les variables de type « Double » (à virgule flottante en double précision) sont stockées sous la forme de nombres à virgule flottante de 64 bits (8 octets) IEEE dont la valeur est comprise entre -1,79769313486232E308 et -4,94065645841247E-324 pour les nombres négatifs et entre 4,94065645841247E-324 et 1,79769313486232E308 pour les positifs. Le caractère de déclaration de type pour une variable de type « Double » est le signe #.

    Integer

    Les variables de type « Integer » sont stockées sous la forme de nombres de 16 bits (2 octets) dont la valeur est comprise entre -32 768 et 32 767. Le caractère de déclaration de type pour les variables de type « Integer » est le signe %.

    Les variables de type « Integer » permettent également de représenter des valeurs énumérées. Celles-ci peuvent contenir un ensemble fini d'entiers uniques possédant tous une signification particulière dans le contexte où ils sont utilisés. Elles permettent d'opérer facilement une sélection parmi un nombre connu de choix, du type noir = 0, blanc = 1, etc. Il est conseillé de définir des constantes pour chaque valeur énumérée via l'instruction Const.

    Long

    Les variables de type « Long » (entier long) sont stockées sous la forme de nombres signés de 32 bits (4 octets) dont la valeur est comprise entre -2 147 483 648 et 2 147 483 647. Le caractère de déclaration de type pour les variables de type « Long » est le signe &.

    Object

    Les variables de type « Object » sont stockées sous la forme d'adresses 32 bits (4 octets) qui font référence à des objets. L'instruction Set permet d'affecter une référence d'objet à une variable déclarée comme « Object ».

    Une variable déclarée comme « Object » est suffisamment flexible pour contenir une référence à n'importe quel type d'objet, mais la liaison à l'objet désigné par la variable est effectuée au moment de l'exécution. Pour obtenir une liaison au moment de la compilation, on attribue la référence d'objet à une variable déclarée avec un nom de classe spécifique.

    Single

    Les variables de type « Single » (à virgule flottante en simple précision) sont stockées sous la forme de nombres à virgule flottante de 32 bits (4 octets) IEEE dont la valeur est comprise entre -3,402823E38 et -1,401298E-45 pour les nombres négatifs et entre 1,401298E-45 et 3,402823E38 pour les positifs. Le caractère de déclaration de type pour les variables de type « Single » est le point d'exclamation (!).

    String

    Il existe deux types de chaînes : les chaînes de longueur variable et les chaînes de longueur fixe. Les chaînes de longueur variable peuvent contenir environ 2 milliards (2^31) de caractères.

    Les chaînes de longueur fixe peuvent contenir de 1 à environ 64 Ko (2^16) de caractères.

    Une chaîne de longueur fixe déclarée comme Public ne peut être utilisée dans les modules de classe. Les codes de caractères de type « String » sont compris entre 0 et 255. Les 128 premiers caractères (0 à 127) du jeu de caractères correspondent aux lettres et symboles d'un clavier américain standard. Ces 128 caractères sont identiques à ceux du jeu de caractères ASCII.

    Les 128 caractères suivants (128 à 255) représentent des caractères spéciaux, comme les lettres de certains alphabets, les accents, les symboles monétaires et les fractions. Le caractère de déclaration de type pour les variables de type String est le signe $.

    Variant

    « Variant » est le type de données attribué à toutes les variables qui ne sont pas explicitement déclarées comme étant d'un autre type (à l'aide d'instructions telles que Dim, Private, Public ou Static). Le type de données « Variant » ne possède aucun caractère de déclaration de type.

    Variant est un type de données spécial pouvant contenir des données de toutes sortes, à l'exception des données de type « String » de longueur fixe et de types définis par l'utilisateur. Une variable de type « Variant » peut également contenir les valeurs Empty, Error, Nothing et Null. Nous pouvons déterminer la procédure de traitement d'une donnée de type « Variant » à l'aide des fonctions VarType et TypeName.

    Les données numériques correspondent à n'importe quel nombre entier ou réel dont la valeur est comprise entre -1,797693134862315E308 et -4,94066E-324 pour les négatifs et entre 4,94066E- 324 et 1,797693134862315E308 pour les positifs. En général, les données numériques de type « Variant » conservent leur type de données original au sein de la valeur de type « Variant ».

    Par exemple, si nous attribuons une valeur de type « Integer » à une donnée de type « Variant », cette dernière sera ultérieurement traitée comme une valeur de type « Integer ».

    Cependant, si une opération arithmétique est exécutée sur une donnée de type « Variant » contenant une valeur de type « Byte », « Integer », « Long » ou « Single » et si le résultat excède la plage de valeurs du type de données, le résultat se voit automatiquement affecté le type de données « Variant » immédiatement supérieur. Une donnée de type « Byte » est transformée en « Integer », une donnée de type « Integer » est transformée en « Long » et une donnée de type « Long » ou « Single » en « Double ».

    Une erreur se produit lorsque des variables de type « Variant » contenant des données de type « Currency », « Decimal » ou « Double » dépassent leur plage de valeurs respective.

    Le type de données « Variant » peut remplacer un autre type de données lorsque vous recherchez plus de souplesse dans le traitement de celles-ci. Si une variable de type « Variant » contient des chiffres, il peut s'agir, selon le contexte, de leur valeur réelle ou de leur représentation sous forme de chaîne.

    Exemple :

    Dim MyVar As Variant

    MyVar = 98052

    Dans l'exemple précédent, MyVar contient une représentation numérique, c'est-à-dire la valeur réelle 98052.

    Les opérateurs arithmétiques peuvent être utilisés avec des variables de type « Variant » contenant des valeurs numériques ou des chaînes de caractères pouvant être interprétées comme des nombres. Si nous utilisons l'opérateur + pour ajouter MyVar à une autre donnée de type « Variant » contenant un nombre ou à une variable de type numérique, nous obtiendrons comme résultat une somme arithmétique.

    La valeur Empty désigne une variable de type « Variant » qui n'a pas été initialisée. Une variable de type « Variant » contenant la valeur Empty équivaut à 0 si elle est utilisée dans un contexte numérique et à une chaîne de longueur nulle ("") dans un contexte de chaînes.

    Ne pas confondre Empty et Null. La valeur Null indique que la variable de type « Variant » ne contient intentionnellement aucune donnée valide.

    Dans une donnée de type « Variant », la valeur Error permet d'indiquer qu'une condition d'erreur s'est produite dans une procédure. Cependant, aucune gestion d'erreur normale de niveau application n'a lieu dans ce cas. Le programmeur ou l'application peuvent donc appliquer un certain traitement en fonction de la valeur d'erreur. Les valeurs de type Error sont créées par conversion de nombres réels à l'aide de la fonction CVErr.

    Les types définis par le programmeur

    Ces types de données sont définis à l'aide de l'instruction Type. Les types de données définis par l'utilisateur peuvent contenir un ou plusieurs éléments d'un type de données, un tableau ou un type de données précédemment défini par l'utilisateur.

    Exemple :

    Type MyType

    MyName As String ' La variable de type String contient un nom

    MyBirthDate As Date ' La variable de type Date contient une date

    de

    naissance

    MySex As Integer ' La variable de type Integer contient le sexe (0 féminin, 1 masculin)

    End Type

    3.2.7. Les instructions

    Les instructions Visual Basic sont complètes. Elles contiennent des mots clés, des opérateurs, des variables, des constantes et des expressions. Chaque instruction appartient à l'une des trois catégories suivantes : déclaration, affectation, exécution.

    La déclaration

    Les instructions de déclaration nomment une variable, une constante ou une procédure et peuvent également spécifier un type de données (Const, Dim, Private, Public, New, Static).

    Private myVar As String

    Ici on déclare une variable « privée » de type « String » et de nom « myVar ».

    L'affectation

    Les instructions d'affectation attribuent une valeur ou une expression à une variable ou à une constante (=, Let).

    Title = "Zone d'accueil"

    Les instructions exécutables

    Ces instructions exécutent des lignes de codes (structures alternatives, structures répétitives, débranchements, appels de modules, ...).

    Les structures alternatives

    Comme dans la plupart des langages, les mots clés correspondant à ces structures sont If, Then, Else, End If.

    Private answer As String

    If answer = Empty Then

    MsgBox "Vous n'avez pas entré de nom"

    Else

    MsgBox "Votre nom est " & answer

    End If

    Les « If multilignes »

    On utilise les mots clés « Else If » autant de fois que nécessaire.

    If answer = Empty Then

    MsgBox "Vous n'avez pas entré de nom"

    Else If answer = "Toto"

    MsgBox "Votre nom est Toto"

    Else

    MsgBox "Votre nom est Toto" & answer

    End If

    Le « case »

    Select Case answer

    Case "Toto"

    Nom = "Toto"

    Case "Titi"

    Nom = "Titi"

    Case Else

    MsgBox "Nom incohérent"

    End Select

    Les structures répétitives

    Visual Basic utilise les mots clés For, To et Next pour les boucles « Pour », Do While et Loop pour la boucle « Tant que » (il existe également While et Wend), Do et Loop Until pour la boucle « Jusqu'à ce que ». Quelques exemple d'utilisation de ces boucles.

    Private T(10) As Integer

    Private I As Integer

    For I=0 To 9

    T[I] = I

    Next

    I = 0

    Do While I < 10

    T[I] = I

    I = I + 1

    Loop

    I = 0

    Do

    T[I] = I

    I = I + 1

    Loop Until I = 10

    Déclaration de l'indice de boucle I et d'un tableau de 10 entiers T Il est impératif d'initialiser I

    Vérification des erreurs de syntaxe

    Si une ligne s'affiche en rouge (avec un éventuel message d'erreur) après sa saisie et la frappe de la touche ENTRÉE, l'instruction correspondante comporte une erreur. Il convient de l'identifier et la corriger.

    Attention : Par défaut Visual basic ne nous oblige pas à déclarer les variables, ce qui est une source d'erreur importante. Afin de remédier à cet inconvénient, il est fortement conseillé d'utiliser au début de chaque module l'instruction « Option Explicit » de façon à obliger VBA à détecter les variables non déclarées.

    Les instructions sur plusieurs lignes

    Une instruction tient généralement sur une ligne, mais il est possible de la continuer sur la ligne suivante à l'aide du caractère de continuité de ligne « _ » (blanc + blanc souligné).

    Dim myVar As String

    myVar = "John"

    MsgBox Prompt:="Bonjour" & myVar, _

    Title:="Zone d'accueil", _

    Buttons:=vbExclamation

    3.2.8. Les modules

    Ecriture d'une procédure

    Une procédure est une série d'instructions délimitée par les instructions Sub et End Sub exécutant des actions mais ne renvoyant pas de valeurs. Une procédure prend des arguments tels que des constantes, des variables ou des expressions passées par un module appelant. Si une procédure n'a pas d'argument, l'instruction Sub doit comporter des parenthèses vides.

    Sub GetInfo()

    Dim answer As String

    answer = InputBox("Quel est votre nom?")

    If answer = Empty Then

    MsgBox "Vous n'avez pas entré de nom."

    Else

    MsgBox "Votre nom est " & answer

    End If

    End Sub

    Ecriture d'une fonction

    Une fonction est une série d'instructions délimitée par les instructions Function et End Function. Une fonction est similaire à une procédure mais peut également renvoyer une valeur. Une fonction peut prendre des arguments, tels que les constantes, les variables ou les expressions qui lui sont passées par un module appelant. Si une fonction n'a aucun argument, son instruction Function doit comporter des parenthèses vides. Une fonction renvoie une valeur en affectant une valeur à son nom dans une ou plusieurs instructions de la procédure. Dans l'exemple suivant, la fonction Celsius convertit des degrés Fahrenheit en degrés Celsius.

    Lorsque la fonction est appelée depuis la procédure Main, une variable contenant la valeur de l'argument est passée à la fonction. Le résultat du calcul est renvoyé à la procédure appelante et affiché dans un message.

    Function Celsius(fDegrees As Integer) As Decimal

    Celsius = (fDegrees - 32) * 5 / 9

    End Function

    Sub Main()

    temp = InputBox("Veuillez entrer la température en degrés F.")

    MsgBox "La température équivaut à " & Celsius(temp) & " degrés C."

    End Sub

    3.3. Implémentation des algorithmes

    Les algorithmes présentés dans ce travail sont implémentés dans une application que nous avons appelé CPLXE Nombres complexes. CPLXE est un outil qui nous permet d'évaluer les fonctions usuelles sur des valeurs complexes, problème que ne résout pas nos calculettes scientifiques. Toutefois, les opérations arithmétiques ordinaires ne sont pas reprises dans cette application vu qu'il existe déjà plusieurs outils permettant de les réaliser. Les arguments des nombres complexes considérés sont des déterminations principales des arguments (c'est-à-dire pour k = 0)

    3.3.1. Présentation de CPLXE

    Propriété du formulaire d'accueil

    Propriété

    valeur

    Name

    Accueil

    Caption

    CPLXE NOMBRES COMPLEXES

    Back color

    &H00FFC0C0&

    StartUpPosition

    CenterScreen

    Codes

    Private Sub Cmdok_Click()

    Unload Me

    End

    End Sub

    Private Sub Cmdquit_Click()

    If optexp.Value = True Then

    Unload Me

    Expcplx.Show

    End If

    If optasincom.Value = True Then

    Unload Me

    Arcsincplx.Show

    End If

    If optachcom.Value = True Then

    Unload Me

    Archcplx.Show

    End If

    If optasincom.Value = True Then

    Unload Me

    Arshcplx.Show

    End If

    If optchcom.Value = True Then

    Unload Me

    Coshcplx.Show

    End If

    If optcoscom.Value = True Then

    Unload Me

    Coscplx.Show

    End If

    If optlogcom.Value = True Then

    Unload Me

    Logcplx.Show

    End If

    If optlogneg.Value = True Then

    Unload Me

    Logneg.Show

    End If

    If optshcom.Value = True Then

    Unload Me

    Shcplx.Show

    End If

    If optsincom.Value = True Then

    Unload Me

    Sincplx.Show

    End If

    If optashcom.Value = True Then

    Unload Me

    Arshcplx.Show

    End If

    If Optarcoscom.Value = True Then

    Unload Me

    Arcoscplx.Show

    End If

    If Optappli.Value = True Then

    Unload Me

    Frmlogi.Show

    End If

    End Sub

    Private Sub Command1_Click()

    Unload Me

    Logneg.Show

    End Sub

    Private Sub Command11_Click()

    Unload Me

    Archcplx.Show

    End Sub

    Private Sub Command12_Click()

    End

    End Sub

    Private Sub Command5_Click()

    Unload Me

    Coscplx.Show

    End Sub

    Private Sub Command6_Click()

    Unload Me

    Arcsincplx.Show

    End Sub

    Private Sub Command7_Click()

    Unload Me

    Arcoscplx.Show

    End Sub

    Private Sub Command8_Click()

    Unload Me

    Shcplx.Show

    End Sub

    Private Sub Timer1_Timer()

    If Lbtexte.Left >= 120 Then

    Lbtexte.Left = Lbtexte.Left - 20

    Else

    Lbtexte.Left = 9120

    End If

    End Sub

    Private Sub Vcmdok_Click()

    End Sub

    3.3.2. Fonction exponentielle

    Interface visuelle

    Propriétés

    Propriété

    valeur

    Name

    Expcplx

    Caption

    Exponentielle

    Back color

    &H00FFC0C0&

    StartUpPosition

    CenterScreen

    codes

    Private Sub A_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

    B.SetFocus

    End If

    End Sub

    Private Sub B_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

    C.SetFocus

    End If

    End Sub

    Private Sub Command1_Click()

    A = ""

    B = ""

    C = ""

    D = ""

    E = ""

    A.SetFocus

    End Sub

    Private Sub Command2_Click()

    If A = "" Or B = "" Or C = "" Then

    MsgBox "Vous avez laissé au moins un champ vide!", vbExclamation, "Attention"

    Else

    If A > 0 Then

    D = A ^ B * Cos(C * Log(A))

    E = A ^ B * Sin(C * Log(A))

    Else

    If A = 0 Then

    If B <> 0 Then

    D = 0

    E = 0

    Else

    MsgBox "Ceci est une forme indéterminée", vbInformation, "Forme indéterminée"

    End If

    Else

    F = 0.043213918264

    D = A ^ B * (F ^ C) * Cos(C * Log(-1 * A))

    E = A ^ B * (F ^ C) * Sin(C * Log(-1 * A))

    End If

    End If

    End If

    End Sub

    Private Sub Command3_Click()

    Unload Me

    accueil1.Show

    End Sub

    Private Sub Command4_Click()

    End

    End Sub

    3.3.3. Fonction logarithmique

    Interface visuelle

    Propriétés

    Propriété

    valeur

    Name

    Logcplx

    Caption

    Logarithmes des nombres complexes

    Back color

    &H00FFC0C0&

    StartUpPosition

    CenterScreen

    Codes

    Private Sub A_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

    B.SetFocus

    End If

    End Sub

    Private Sub Command1_Click()

    A = ""

    B = ""

    C = ""

    D = ""

    A.SetFocus

    End Sub

    Private Sub Command2_Click()

    If A = "" Or B = "" Then

    MsgBox "Entrer des valeurs numériques svp!", vbInformation, "Information"

    A = ""

    B = ""

    C = ""

    D = ""

    A.SetFocus

    End If

    If A = 0 Then

    If B = 0 Then

    MsgBox "Le logarithme de zéro est moins l'infini", vbInformation, "Information"

    A = ""

    B = ""

    C = ""

    D = ""

    A.SetFocus

    Else

    C = Log(Sqr(B * B))

    If B > 0 Then

    D = 1.57079632679

    Else

    D = -1.57079632679

    End If

    End If

    Else

    If A < 0 Then

    If B < 0 Then

    C = Log(Sqr(A * A + B * B))

    E = 3.14159265359

    D = Atn(B / A) - E

    Else

    C = Log(Sqr(A * A + B * B))

    E = 3.14159265359

    D = E + Atn(B / A)

    End If

    Else

    C = Log(Sqr(A * A + B * B))

    D = Atn(B / A)

    End If

    End If

    End Sub

    Private Sub Command3_Click()

    Unload Me

    accueil1.Show

    End Sub

    Private Sub Command4_Click()

    End

    End Sub

    3.3.4. Fonction sinus

    Interface visuelle

    Propriétés

    Propriété

    valeur

    Name

    Sincplx

    Caption

    Sinuss des nombres complexes

    Back color

    &H00FFC0C0&

    StartUpPosition

    CenterScreen

    codes

    Private Sub A_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

    B.SetFocus

    End If

    End Sub

    Private Sub Command1_Click()

    A = ""

    B = ""

    C = ""

    D = ""

    A.SetFocus

    End Sub

    Private Sub Command2_Click()

    If A = "" Or B = "" Then

    MsgBox "Verifiez que vous avez rempli tous les champs", vbInformation, "Information"

    A = ""

    B = ""

    A.SetFocus

    Else

    C = (1 / 2) * Sin(A) * (2.71828182845924 ^ (-1 * B) + 2.71828182845924 ^ B)

    D = -(1 / 2) * Cos(A) * (2.71828182845924 ^ (-1 * B) - 2.71828182845924 ^ B)

    End If

    End Sub

    Private Sub Command3_Click()

    Unload Me

    accueil1.Show

    End Sub

    Private Sub Command4_Click()

    End

    End Sub

    3.3.5. Fonction cosinus

    Interface visuelle

    Propriétés

    Propriété

    valeur

    Name

    Coscplx

    Caption

    Cosinus des nombres complexes

    Back color

    &H00FFC0C0&

    StartUpPosition

    CenterScreen

    Codes

    Private Sub A_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

    B.SetFocus

    End If

    End Sub

    Private Sub Command1_Click()

    A = ""

    B = ""

    C = ""

    D = ""

    A.SetFocus

    End Sub

    Private Sub Command2_Click()

    If A = "" Or B = "" Then

    MsgBox "Verifiez que vous avez rempli tous les champs", vbInformation, "Information"

    A = ""

    B = ""

    A.SetFocus

    Else

    C = (1 / 2) * Cos(A) * (2.71828182845924 ^ (-1 * B) + 2.71828182845924 ^ B)

    D = (1 / 2) * Sin(A) * (2.71828182845924 ^ (-1 * B) - 2.71828182845924 ^ B)

    End If

    End Sub

    Private Sub Command3_Click()

    Unload Me

    accueil1.Show

    End Sub

    Private Sub Command4_Click()

    End

    End Sub

    3.3.6. Fonction arc sinus

    Interface visuelle

    Propriétés

    Propriété

    valeur

    Name

    Arcsincplx

    Caption

    Fonction trigonométrique réciproque (Arc sin)

    Back color

    &H00FFC0C0&

    StartUpPosition

    CenterScreen

    Codes

    Dim A, B, k, l As Long

    Private Sub Cmdcal_Click()

    If (Txta = "" Or Txtb = "") Then

    MsgBox "Verifiez que vous avez rempli tous les champs", vbInformation, "Information"

    Txta = ""

    Txtb = ""

    Lbla = ""

    Lblb = ""

    Txta.SetFocus

    Else

    A = Val(Txta)

    B = Val(Txtb)

    k = Sqr((Sqr(A ^ 4 + B ^ 4 + 2 * A ^ 2 * B ^ 2 - 2 * A ^ 2 + 2 * B ^ 2 + 1) + A ^ 2 - B ^ 2 - 1) / 2)

    l = Sqr((Sqr(A ^ 4 + B ^ 4 + 2 * A ^ 2 * B ^ 2 - 2 * A ^ 2 + 2 * B ^ 2 + 1) - A ^ 2 + B ^ 2 + 1) / 2)

    If (A > -1 And A < 1 And A <> 0) And B = 0 Then

    Lbla = Atn(Sqr((A ^ 2) / (1 - A ^ 2)))

    Lblb = 0

    ElseIf A = 1 And B = 0 Then

    Lbla = 1.57079632679

    Lblb = 0

    ElseIf A = 0 And B = 0 Then

    Lbla = 0

    Lblb = 0

    ElseIf (A * B) >= 0 Then

    Lbla = 1.57079632679 - (Atn((B + l) / (A + k)))

    Lblb = Log(Sqr((A + k) ^ 2 + (B + l) ^ 2))

    ElseIf (A * B) < 0 Then

    Lbla = 1.57079632679 + Atn((B + l) / (A + k))

    Lblb = Log(Sqr((A + k) ^ 2 + (B + l) ^ 2))

    End If

    End If

    End Sub

    Private Sub Command1_Click()

    Txta = ""

    Txtb = ""

    Lbla = ""

    Lblb = ""

    Txta.SetFocus

    End Sub

    Private Sub Command3_Click()

    Unload Me

    accueil1.Show

    End Sub

    Private Sub Command4_Click()

    End

    End Sub

    Private Sub Txta_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

    Txtb.SetFocus

    End If

    End Sub

    Private Sub Txtb_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

    Cmdcal.SetFocus

    End If

    End Sub

    3.3.7. Fonction arc cosinus

    Interface visuelle

    Propriétés

    Propriété

    valeur

    Name

    Arcoscplx

    Caption

    Fonction trigonométrique réciproque (Arc cos)

    Back color

    &H00FFC0C0&

    StartUpPosition

    CenterScreen

    Codes

    Dim A, B, k, l As Long

    Private Sub Cmdcal_Click()

    If (Txta = "" Or Txtb = "") Then

    MsgBox "Verifiez que vous avez rempli tous les champs", vbInformation, "Information"

    Txta = ""

    Txtb = ""

    Lbla = ""

    Lblb = ""

    Txta.SetFocus

    Else

    A = Val(Txta)

    B = Val(Txtb)

    k = Sqr((Sqr(A ^ 4 + B ^ 4 + 2 * A ^ 2 * B ^ 2 - 2 * A ^ 2 + 2 * B ^ 2 + 1) + A ^ 2 - B ^ 2 - 1) / 2)

    l = Sqr((Sqr(A ^ 4 + B ^ 4 + 2 * A ^ 2 * B ^ 2 - 2 * A ^ 2 + 2 * B ^ 2 + 1) - A ^ 2 + B ^ 2 + 1) / 2)

    If A = 0 And B = 0 Then

    Lbla = 1

    Lblb = 0

    ElseIf (A > -1 And A < 1 And A <> 0) And B = 0 Then

    Lbla = Atn(Sqr((1 - A ^ 2) / (A ^ 2)))

    Lblb = 0

    ElseIf (A * B) > 0 Then

    Lbla = Atn((B + l) / (A + k))

    Lblb = Log(Sqr((A + k) ^ 2 + (B + l) ^ 2))

    ElseIf (A * B) <= 0 Then

    Lbla = -1 * Atn((B + l) / (A + k))

    Lblb = Log(Sqr((A + k) ^ 2 + (B + l) ^ 2))

    End If

    End If

    End Sub

    Private Sub Command1_Click()

    Txta = ""

    Txtb = ""

    Lbla = ""

    Lblb = ""

    Txta.SetFocus

    End Sub

    Private Sub Command3_Click()

    Unload Me

    accueil1.Show

    End Sub

    Private Sub Command4_Click()

    End

    End Sub

    Private Sub Txta_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

    Txtb.SetFocus

    End If

    End Sub

    Private Sub Txtb_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

    Cmdcal.SetFocus

    End If

    End Sub

    3.3.8. Fonction sinus hyperbolique

    Interface visuelle

    Propriétés

    Propriété

    valeur

    Name

    shcplx

    Caption

    Fonction hyperbolique : sinus hyperbolique

    Back color

    &H00FFC0C0&

    StartUpPosition

    CenterScreen

    codes

    Private Sub Cmdcal_Click()

    If (Txta = "" Or Txtb = "") Then

    MsgBox "Verifiez que vous avez rempli tous les champs", vbInformation, "Information"

    Txta = ""

    Txtb = ""

    Lbla = ""

    Lblb = ""

    Txta.SetFocus

    Else

    A = Val(Txta)

    B = Val(Txtb)

    Lbla = (1 / 2) * Cos(B) * (2.71828182845924 ^ A - 2.71828182845924 ^ (-A))

    Lblb = (1 / 2) * Sin(B) * (2.71828182845924 ^ A + 2.71828182845924 ^ (-A))

    End If

    End Sub

    Private Sub Command1_Click()

    Txta = ""

    Txtb = ""

    Lbla = ""

    Lblb = ""

    Txta.SetFocus

    End Sub

    Private Sub Command3_Click()

    Unload Me

    accueil1.Show

    End Sub

    Private Sub Command4_Click()

    End

    End Sub

    Private Sub Txta_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

    Txtb.SetFocus

    End If

    End Sub

    3.3.9. Fonction Cosinus hyperbolique

    Interface visuelle

    Propriétés

    Propriété

    valeur

    Name

    chcplx

    Caption

    Fonction hyperbolique : cosinus hyperbolique

    Back color

    &H00FFC0C0&

    StartUpPosition

    CenterScreen

    Codes

    Private Sub Cmdcal_Click()

    If (Txta = "" Or Txtb = "") Then

    MsgBox "Verifiez que vous avez rempli tous les champs", vbInformation, "Information"

    Txta = ""

    Txtb = ""

    Lbla = ""

    Lblb = ""

    Txta.SetFocus

    Else

    A = Val(Txta)

    B = Val(Txtb)

    Lbla = (1 / 2) * Cos(B) * (2.71828182845924 ^ A + 2.71828182845924 ^ (-A))

    Lblb = (1 / 2) * Sin(B) * (2.71828182845924 ^ A - 2.71828182845924 ^ (-A))

    End If

    End Sub

    Private Sub Command1_Click()

    Txta = ""

    Txtb = ""

    Lbla = ""

    Lblb = ""

    Txta.SetFocus

    End Sub

    Private Sub Command3_Click()

    Unload Me

    accueil1.Show

    End Sub

    Private Sub Command4_Click()

    End

    End Sub

    Private Sub Txta_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

    Txtb.SetFocus

    End If

    End Sub

    3.3.10. Fonction arc sinus hyperbolique

    Interface visuelle

    Propriétés

    Propriété

    valeur

    Name

    shcplx

    Caption

    Fonction hyperbolique réciproque : Arsh

    Back color

    &H00FFC0C0&

    StartUpPosition

    CenterScreen

    Codes

    Dim A, B, k, l As Long

    Private Sub Cmdcal_Click()

    A = Val(Txta)

    B = Val(Txtb)

    If (Txta = "" Or Txtb = "") Then

    MsgBox "Verifiez que vous avez rempli tous les champs", vbInformation, "Information"

    Txta = ""

    Txtb = ""

    Lbla = ""

    Lblb = ""

    Txta.SetFocus

    Else

    A = Val(Txta)

    B = Val(Txtb)

    k = Sqr((Sqr(A ^ 4 + B ^ 4 + 2 * A ^ 2 * B ^ 2 - 2 * A ^ 2 - 2 * B ^ 2 + 1) + A ^ 2 - B ^ 2 + 1) / 2)

    l = Sqr((Sqr(A ^ 4 + B ^ 4 + 2 * A ^ 2 * B ^ 2 - 2 * A ^ 2 - 2 * B ^ 2 + 1) - A ^ 2 + B ^ 2 + 1) / 2)

    If (A + k) = 0 Then

    Lblb = -1.57079632679

    Lbla = Log(Sqr((A + k) ^ 2 + (B + l) ^ 2))

    ElseIf (A * B) > 0 Then

    Lblb = Atn((B + l) / (A + k))

    Lbla = Log(Sqr((A + k) ^ 2 + (B + l) ^ 2))

    ElseIf (A * B) <= 0 Then

    Lblb = -1 * Atn((B + l) / (A + k))

    Lbla = Log(Sqr((A + k) ^ 2 + (B + l) ^ 2))

    End If

    End If

    End Sub

    Private Sub Command1_Click()

    Txta = ""

    Txtb = ""

    Lbla = ""

    Lblb = ""

    Txta.SetFocus

    End Sub

    Private Sub Command3_Click()

    Unload Me

    accueil1.Show

    End Sub

    Private Sub Command4_Click()

    End

    End Sub

    Private Sub Txta_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

    Txtb.SetFocus

    End If

    End Sub

    Private Sub Txtb_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

    Cmdcal.SetFocus

    End If

    End Sub

    3.3.11. Fonction arc cosinus hyperbolique

    Interface visuelle

    Propriété

    Propriété

    valeur

    Name

    chcplx

    Caption

    Fonction hyperbolique réciproque : Ch

    Back color

    &H00FFC0C0&

    StartUpPosition

    CenterScreen

    Codes

    Dim A, B, k, l As Long

    Private Sub Cmdcal_Click()

    If (Txta = "" Or Txtb = "") Then

    MsgBox "Verifiez que vous avez rempli tous les champs", vbInformation, "Information"

    Txta = ""

    Txtb = ""

    Lbla = ""

    Lblb = ""

    Txta.SetFocus

    Else

    A = Val(Txta)

    B = Val(Txtb)

    k = Sqr((Sqr(A ^ 4 + B ^ 4 + 2 * A ^ 2 * B ^ 2 - 2 * A ^ 2 + 2 * B ^ 2 + 1) + A ^ 2 - B ^ 2 - 1) / 2)

    l = Sqr((Sqr(A ^ 4 + B ^ 4 + 2 * A ^ 2 * B ^ 2 - 2 * A ^ 2 + 2 * B ^ 2 + 1) - A ^ 2 + B ^ 2 + 1) / 2)

    If (A > -1 And A < 1 And A <> 0) And B = 0 Then

    Lblb = Atn(Sqr((1 - A ^ 2) / A ^ 2))

    Lbla = 0

    ElseIf A = 0 And B = 0 Then

    Lblb = 1.57079632679

    Lbla = 0

    ElseIf (A + k) = 0 Then

    Lbla = Log(Sqr((A + k) ^ 2 + (B + l) ^ 2))

    Lblb = 1.57079632679

    ElseIf (A * B) >= 0 Then

    Lblb = Atn((B + l) / (A + k))

    Lbla = Log(Sqr((A + k) ^ 2 + (B + l) ^ 2))

    ElseIf (A * B) < 0 Then

    Lblb = -1 * Atn((B + l) / (A + k))

    Lbla = Log(Sqr((A + k) ^ 2 + (B + l) ^ 2))

    End If

    End If

    End Sub

    Private Sub Command1_Click()

    Txta = ""

    Txtb = ""

    Lbla = ""

    Lblb = ""

    Txta.SetFocus

    End Sub

    Private Sub Command2_Click()

    End Sub

    Private Sub Command3_Click()

    Unload Me

    accueil1.Show

    End Sub

    Private Sub Command4_Click()

    End

    End Sub

    Private Sub Txta_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

    Txtb.SetFocus

    End If

    End Sub

    Private Sub Txtb_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

    Cmdcal.SetFocus

    End If

    End Sub

    CONCLUSION

    Dans ce travail, nous avons étudié les prolongements des fonctions réelles dans le corps C des nombres complexes, c'est-à-dire que les résultats que donnent nos algorithmes pour des valeurs complexes doivent être une généralisation des solutions pour des cas particuliers des réels (noter que les réels sont des complexes particuliers).

    Comme nous l'avons soutenu tout au long de ce travail, les prolongements naturels des fonctions élémentaires usuelles en Analyse au domaine complexe enrichissent parfois ces fonctions en nouvelles propriétés qui peuvent être exploitées dans d'autres domaines de la Mathématique et Sciences physiques. A titre d'exemple, nous avons vu comment les fonctions sinus et cosinus prolongées dans le domaine complexe ont cessé d'être bornées et par ailleurs, les fonctions exponentielles et logarithmiques se sont enrichies des propriétés intéressantes : prolongée dans le domaine complexe, la fonction exponentielle ez devient périodique tandis que la fonction logarithmique devient multiforme.

    En vue de rendre disponibles les résultats en temps record, nous avons implémenté les algorithmes des calculs pour chaque type de fonction dans un logiciel que nous avons dénommé CPLXE nombres complexes. Ce dernier est un utilitaire de calcul qui ne remplace pas une calculette scientifique mais la complète dans les calculs sur des nombres complexes.

    Signalons par ailleurs que CPLXE Nombres complexes est un produit du département de Mathématique et Informatique de l'Université Pédagogique Nationale car réalisé aux moyens des ressources de ce dernier (principalement les ressources humaines). Toute exploitation dudit logiciel doit être motivée par une permission préalable du département de Mathématique et Informatique.

    Enfin, nous remercions les membres du département pour leur soutien dans la réalisation de notre travail.

    A tous nos lecteurs, nous restons ouverts à leurs suggestions et présentons d'avance nos excuses pour d'éventuelles erreurs dans ce travail.

    BIBLIOGRAPHIE

    "The American Heritage" (1976), Review Ed. New College Edition

    Antibi, A et Barra, R. (1998) : "Math TermS, Obligatoire", Ed. Nathan, Paris

    Badaga O'gale, A, (2003): "Méthodes des recherches scientifiques", EIFI, Kinshasa

    Beltramone, J.P. et al (2002) : "DECLIC Maths, Terminal S/Enseignement obligatoire", Ed. Hachette, Paris

    Bouteloup, D. (2003) : "Eléments de Géométrie différentielle", ENSG, Paris

    Canevet, D. (2005) : "L'Algorithmique et le Pascal", Ed. Delagrave, Paris

    Chambadal, L. (1968) : "Dictionnaire des mathématiques modernes", Librairie Larousse, Paris

    Chambert, A. (2005 - 2006) : "Algèbre Commutative", Cours, Université de Rennes

    Cougnard, J. (2004 -2005) : "Compléments d'Algèbre", Master de Mathématique, Seconde année, Université de Caen, 2004 - 2005

    CPR Informatique (2002) : "Visual Basic v.6.0", Cours, Ecole nationale des sciences géographiques

    Engombe Wedi Shamba, B. (2007 - 2008), "Compléments d'Algèbre", Cours Inédit, UPN, Kinshasa

    Ferrard, J. M., "Nombres complexes, trigonométrie", Presse universitaire, ac Lyon

    Granville, W. A, Smith, P. F. et Longley, W. R (1966) : "Eléments du calcul différentiel et intégral", Vuibert, 2è édition française, Paris

    Lavrentiev, M et Chabat, B,(1972):"Méthodes de la théorie des fonctions d'une variable complexe", Mir, moscou

    Makiadi Nzumba, J.M., (1994):"Etude des fonctions" Tome I, CRP, Kinshasa

    Nearing, J. (2006) : "Mathematicals tools for Physics", Reviewed Ed, University of Miami

    Thiel, E. :"Algorithmes et programmation en Pascal", DEUG 1, Cours, Luming, 2004

    Van Loo, R. (1985) : "Les grandes règles de programmation en BASIC", Ed. Marabout, Alleur, Belgique

    Sites Web

    www.les-mathematiques.net

    www.wikipedia.net

    http://name.math.univ-rennes.fr

    http://www.inc.imag.fr

    Autres Sources

    Microsoft Encarta 2007.

    TABLE DE MATIERES

    Epigraphe

    DEDICACE ................................................................................................... I

    AVANT - PROPOS ..................................................................................... II

    0. Introduction .......................................................................................... 1

    0.1. Problématique ...................................................................... 1

    0.2. Hypothèse .............................................................................. 2

    0.3. Choix et intérêt du sujet ...................................................... 3

    0.4. Délimitation du sujet ........................................................... 3

    0.5. Méthodes et techniques utilisées...................................... 4

    0.6. Subdivision du travail.......................................................... 5

    Chap. 1. Le corps C des nombres complexes ....................................... 6

    1.1. Historique des nombres complexes ................................. 6

    1.1.1. Formule de Cardan ................................................ 6

    1.1.2. Audace de Bombelli ............................................... 6

    1.1.3. Apport des autres mathématiciens ..................... 7

    1.2. Définition de C ...................................................................... 7

    1.2.1. Définition ................................................................ 7

    1.2.2. Notation cartésienne ............................................ 8

    1.2.3. Conjugaison ............................................................. 9

    1.2.4. Module .................................................................... 10

    1.2.5. Fonctions à valeurs complexes ............................ 11

    1.3. Argument, exponentielle complexe .................................. 12

    1.3.1. Notation e ............................................................. 12

    1.3.2. Formules de Moivre et d'Euler ............................. 14

    1.3.3. Forme trigonométrique ....................................... 15

    1.3.4. Fonction exponentielle complexe ........................17

    1.4. Equations polynomiales ...................................................... 18

    1.4.1. Théorème de d'Alembert ...................................... 18

    1.4.2. Racines carrées d'un nombres complexes ......... 19

    1.4.4. Racines nième de l'unité ....................................... 21

    Chap. 2. Fonctions à variables complexes ........................................... 22

    2.1. Fonctions exponentielles ................................................... 22

    2.2. Fonctions logarithmiques ................................................... 24

    2.2.1. Définition de la fonction logarithmique .............. 24

    2.2.2. La fonction logarithme népérien ......................... 25

    2.3. Fonctions trigonométriques ............................................... 26

    2.3.1. Fonction sinus ......................................................... 26

    2.3.2. Fonction cosinus ..................................................... 27

    2.4. Fonctions trigonométriques réciproques ........................ 27

    2.4.1. Fonction arc sin ...................................................... 27

    2.4.2. Fonction arc cosinus .............................................. 30

    2.5. Fonctions hyperboliques .................................................... 33

    2.5.1. Fonction sh .............................................................. 33

    2.5.2. fonction ch .............................................................. 34

    2.6. Fonctions hyperboliques réciproques .............................. 34

    2.6.1. Fonction arsh .......................................................... 34

    2.6.2. Fonction arch .......................................................... 35

    Chap. 3. Algorithme et programmation ............................................... 36

    3.1. Algorithme ............................................................................. 36

    3.1.1. Calcul de l'exponentielle d'un complexe............ 37

    3.1.2. Calcul du logarithme d'un nombre complexe ... 37

    3.1.3. Calcul de sinus d'un nombre complexe .............. 38

    3.1.4. Calcul de cosinus d'un nombre complexe.......... 38

    3.1.5. Calcul de l'arc sinus d'un nombre complexe ...... 39

    3.1.6.Calcul de l'arc cosinus d'un nombre complexe ... 39

    3.1.7. Calcul de sinus hyperbolique d'un complexe .... 40

    3.1.8. Calcul de cos hyperbolique d'un complexe....... 40

    3.1.9. Calcul de l'arc sin hyperbolique d'un complexe 41

    3.1.10. Calcul d'arc cos hyperbolique d'un complexe 41

    3.2. Les principaux concepts de Visual Basic ......................... 42

    3.2.1. Présentation générale ........................................... 42

    3.2.2. Le modèle événementiel ...................................... 43

    3.2.3. La notion d'objet ................................................... 43

    3.2.4. La notion de méthode et de propriété ............... 43

    3.2.5. La syntaxe de Visual Basic ..................................... 44

    3.2.6. Les types de données ............................................ 45

    3.2.7. Les instructions ....................................................... 51

    3.2.8. Les modèles ............................................................ 53

    3.3. Implémentation des algorithmes ...................................... 55

    3.3.1. Présentation de CPLXE .......................................... 55

    3.3.2. Fonction exponentielle .......................................... 58

    3.3.3. Fonction logarithmique ......................................... 61

    3.3.4. Fonction sinus ......................................................... 63

    3.3.5. Fonction cosinus ..................................................... 65

    3.3.6. Fonction arc sinus .................................................. 66

    3.3.7. Fonction arc cosinus .............................................. 69

    3.3.8. Fonction sinus hyperbolique ................................ 71

    3.3.9. Fonction cosinus hyperbolique ............................ 73

    3.3.10. Fonction arc sinus hyperbolique ........................ 74

    3.3.11. Fonction arc cosinus hyperbolique ................... 76

    CONCLUSION ............................................................................................. 79

    BIBLIOGRAPHIE ......................................................................................... 80

    TABLE DE MATIERES ................................................................................ 81

    * 1 Lavrentiev, M. et Chabat, B. (1972), « Méthodes de la théorie des fonctions d'une variable complexe », Mir, Moscou

    * 2 Certaines parmi ces fonctions seront multiformes.

    * 3 MAKIADI NZUMBA, J. M., Etude des fonctions, Tome I, Ed. CRP, page 2

    * 4 Aphy Badaga O'gale Mabagwa (2003),, Méthodes des recherches scientifiques, EIFI, Kinshasa

    * 5 BELTRAMONE, J. P. et al, DECLIC Maths, Terminal S/Enseignement obligatoire, Ed. Hachette, Paris, 2002

    * 6 Jérôme CARDAN de l'Italien Hieronimo CARDAN : médecin, astrologue, poète et mathématicien italien (Pavie 1501 - Rome 1576)

    * 7 On peut faire le développement en série de Mac-Laurin de la fonction eiy

    * 8 Antibi, A. et Barra, R (1998)., « Math TermS, Obligatoire », page 139, Ed. NATHAN, Paris

    * 9 Beltramone, J.P. et al.(2002), « Declic, Maths terminale S/Enseignement Obligatoire », Ed. Hachette, Paris

    * 10 Malaval, J. , Courbon, D.(2002),  « Math Term ES/ Obligatoire et Spécialité », page 134, Ed. Nathan, Paris

    * 11 John Néper (en Français Jean NAPIER) : Baron de Merchiston, mathématicien écossais (1550 - 1617).

    * 12 Microsoft Encarta 2007

    * 13 Le titre original de cet ouvrage est « Kital Al-jabr wal muqabala »






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"L'imagination est plus importante que le savoir"   Albert Einstein