« Mathématiques avec Python et Ruby/Nombres complexes en Python » : différence entre les versions

Contenu supprimé Contenu ajouté
m Bot: Mise à jour des codes texvc par des équivalentes LaTeX (documentation)
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 9 :
Dans ''Python'', il suffit d'écrire ''complex(x,y)'' pour avoir un nombre complexe :
 
<sourcesyntaxhighlight lang="python">
z=complex(4,3)
print(z)
</syntaxhighlight>
</source>
 
Même si les coordonnées ''x'' et ''y'' du point sont entières ou des fractions, elles deviennent des réels lorsque ''Python'' instancie le complexe. Voir les propriétés du complexe ci-dessous pour le vérifier.
Ligne 18 :
Si on veut quand même que la lettre ''i'' désigne le complexe de carré -1, il suffit de le déclarer comme tel :
 
<sourcesyntaxhighlight lang="python">
i=complex(0,1)
print(i**2)
</syntaxhighlight>
</source>
 
 
Ligne 28 :
Les quatre opérations se notent respectivement ''+'', ''-'', ''*'' et ''/'', et donnent toujours un complexe, même si celui-ci est réel (exemple de la soustraction ci-dessous) :
 
<sourcesyntaxhighlight lang="python">
a=complex(2,3)
b=complex(4,3)
Ligne 35 :
print(a*b)
print(a/b)
</syntaxhighlight>
</source>
 
L'élévation à un exposant se note de la même manière que pour les autres nombres, par ''**''. Mais l'exposant peut même être un complexe!
 
<sourcesyntaxhighlight lang="python">
i=complex(0,1)
print(i**i)
</syntaxhighlight>
</source>
 
On constate que <math>i^i \in \R</math>...
Ligne 48 :
La racine carrée d'un complexe peut aussi s'obtenir par une élévation de celui-ci à la puissance 0,5 mais dans ce cas on n'obtient qu'une seule des deux racines carrées :
 
<sourcesyntaxhighlight lang="python">
c=complex(7,24)
print(c**0.5)
</syntaxhighlight>
</source>
 
Mais ''-4-3i'' a aussi pour carré ''7+24i''. Comment fait ''Python'' pour choisir entre les deux racines carrées?
Ligne 57 :
Même -1 a deux racines carrées dans <math>\Complex</math>, et comme on s'en doute, ''Python'' ne choisit pas ''-i'' mais ''i''... ou plutôt un complexe proche de celui-ci :
 
<sourcesyntaxhighlight lang="python">
print((-1)**0.5)
</syntaxhighlight>
</source>
 
 
Ligne 67 :
Les parties réelle et imaginaire d'un complexe sont des propriétés de l'objet :
 
<sourcesyntaxhighlight lang="python">
z=complex(4,3)
print(z.real)
print(z.imag)
</syntaxhighlight>
</source>
 
Par contre, le conjugué d'un complexe est une méthode de celui-ci :
 
<sourcesyntaxhighlight lang="python">
z=complex(4,3)
print(z.conjugate())
</syntaxhighlight>
</source>
 
(on remarque la présence des parenthèses après ''conjugate'')
Ligne 86 :
Pour avoir le module d'un nombre complexe, on entre ''abs'' :
 
<sourcesyntaxhighlight lang="python">
z=complex(4,3)
print(abs(z))
</syntaxhighlight>
</source>
 
Bien entendu, le résultat est réel.
Ligne 95 :
Cependant, pour avoir l'argument de ''a'', il faut charger le module (c'est le cas de le dire!) ''cmath'' :
 
<sourcesyntaxhighlight lang="python">
from cmath import *
z=complex(4,3)
print(phase(z))
</syntaxhighlight>
</source>
 
 
On remarque que ''Python'' utilise le mot ''phase'' et non le mot ''argument''. ''cmath'' permet aussi de calculer d'un coup le module et l'argument d'un nombre complexe avec ''polar'' :
 
<sourcesyntaxhighlight lang="python">
from cmath import *
z=complex(4,3)
print(polar(z))
</syntaxhighlight>
</source>
 
Pour réaliser l'opération inverse (calculer l'exponentielle d'un nombre imaginaire), on utilise ''rect'' :
 
<sourcesyntaxhighlight lang="python">
from cmath import *
print(rect(2,pi/3))
</syntaxhighlight>
</source>
 
Par exemple, si on veut calculer le plus petit angle et l'hypoténuse d'un triangle rectangle de côtés 12 cm et 5 cm, on peut faire ceci :
 
<sourcesyntaxhighlight lang="python">
from cmath import *
a=12
Ligne 126 :
print(phase(z))
print(abs(z))
</sourcesyntaxhighlight>
 
== Fonctions ==
Ligne 136 :
Pour vérifier numériquement que <math>e^{\frac{\pi}{3}i}=\frac{1}{2}+i\frac{\sqrt{3}}{2}</math>, on peut utiliser l'exponentielle d'un nombre complexe (en l’occurrence, imaginaire) :
 
<sourcesyntaxhighlight lang="python">
from cmath import *
t=complex(0,pi/3)
Ligne 143 :
print(z.real-0.5)
print(z.imag==sqrt(3)/2)
</syntaxhighlight>
</source>
 
On voit que la partie réelle n'est pas tout-à-fait égale à 0,5 (la différence est minime mais non nulle), c'est encore une conséquence de la représentation binaire des nombres en machine, puisque le développement binaire de 0,5 est infini, contrairement à son développement décimal.
Ligne 149 :
Le script suivant calcule et affiche les fonctions trigonométriques hyperboliques d'un complexe :
 
<sourcesyntaxhighlight lang="python">
from cmath import *
z=complex(4,3)
Ligne 155 :
print(sinh(z))
print(tanh(z))
</syntaxhighlight>
</source>
 
=== Logarithmes ===
Ligne 163 :
Le script suivant calcule et affiche les fonctions trigonométriques hyperboliques d'un complexe :
 
<sourcesyntaxhighlight lang="python">
from cmath import *
z=complex(4,3)
print(log(z))
</syntaxhighlight>
</source>
 
Le script suivant calcule et affiche les arguments des fonctions trigonométriques hyperboliques d'un complexe :
 
<sourcesyntaxhighlight lang="python">
from cmath import *
z=complex(4,3)
Ligne 177 :
print(asinh(z))
print(atanh(z))
</syntaxhighlight>
</source>
 
 
Ligne 186 :
Le script suivant calcule et affiche les fonctions trigonométriques d'un complexe :
 
<sourcesyntaxhighlight lang="python">
from cmath import *
z=complex(4,3)
Ligne 192 :
print(sin(z))
print(tan(z))
</syntaxhighlight>
</source>
 
 
Ligne 199 :
Le script suivant calcule et affiche les arcs des fonctions trigonométriques d'un complexe :
 
<sourcesyntaxhighlight lang="python">
from cmath import *
z=complex(4,3)
Ligne 205 :
print(asin(z))
print(atan(z))
</syntaxhighlight>
</source>