Les nombres complexes

Les types complexes

Nous avons déjà vu les nombres réels. Python fonctionne aussi avec les nombres complexes, dont la partie imaginaire est identifiée par la lettre j au lieu de la lettre i utilisée dans la notation mathématiquesque. Par exemple, 1+2i est écrit 1+2j en Python.

>>>x = 5+3j
>>>type(x)
<class 'complex'>
>>>y = 5.2+1j
>>>type(y)
<class 'complex'>

Remarque : Fonction complex()

On peut aussi définir un nombre complexe en utilisant la fonction complex() :

>>>x = complex(5,3)
>>>x
x = (5+3j) 

Remarque : Partie imaginaire vaut 1

Attention, le nombre complexe 5+i a pour partie imaginaire 1. En python, ce nombre complexe doit être écrit 5+1j au lieu de 5+j, sinon, j sera considérée comme une variable non définie :

>>> x=2+j
Traceback (most recent call last):
  File "", line 301, in runcode
  File "", line 1, in 
NameError: name 'j' is not defined
>>>

Exemple 3

>>>a=9+1j+7+2j
>>>a
(16+3j)
>>>type(a)
<class 'complex'>
>>>b=(2+5j)/4
>>>b
(0.5+1.25j)
>>>type(b)
<class 'complex'>
>>>c=9.2+(7+3j)
>>>c
(16.2+3j)
>>>type(c)
<class 'complex'>

La fonction complex() permet de convertir un nombre quelconque ou une chaîne de caractères en un nombre complexe.

Exemple 4

>>>x = complexe(12.7)
>>>x
(12.7+0j)
>>>type(x)
<class 'complex'>
>>>y = complexe("7+3j")
>>>y
(7+3j)
>>>type(y)
<class 'complex'>

Les opérations et les nombres complexes

On peut additionner et soustraire des nombres complexes de la même façon qu'avec les réels.

>>>x = 5+3j
>>>y = 5.25+1j
>>>x+y
(10.25+4j)
>>>x-y
(-0.25+2j)

De même la multiplication et la division entre deux nombres complexes s'appliquent de façon similaire.

>>>x*y
(23.25+20.75j)
>>>x/y
(1.024070021881838+0.37636761487964987j)

Les parties réelle et imaginaire

Le modulo % et la division arrondie à l'entier inférieur // ne fonctionnent pas sur les complexes.

Les parties réelles et imaginaire d'un nombre complexe peuvent être obtenues en utilisant ses attributs real et imag :

>>>z = 4+3j
>>>z.real
4.0
>>>z.imag
3.0

Le conjugué

ALe conjugué d'un nombre complexe est retourné par la méthode conjugate() :

>>>z = 4+3j 
>>>z.conjugate()
(4-3j)

Le module

Pour calculer le module d'un nombre complexe, on peut utiliser la définition : Si \(z = x+iy\) alors \( |z| = \sqrt{ x^2 + y^2 } \)

>>>z = 4+3j 
>>>(z.real**2+z.imag**2)**0.5
5.0

Une manière simple d'obtenir le module d'un nombre complexe est d'utiliser la fonction abs(). Celle-ci renvoie la valeur absolue lorsqu'elle est appliquée à un réel et le module lorsque son paramètre est un nombre complexe.

>>>z = 4+3j 
>>>abs(z)
5.0

On peut aussi utiliser le module cmath (complex math) de la bibliothèque standard pour déterminer un argument d'un nombre complexe ou les fonctions trigonométriques appliquées aux nombres complexes

Pour déterminer un argument principal en radians d'un nombre complexe, on utilise la fonction phase() du module cmath

>>>from cmath import *
>>>z = 1j 
>>>phase(z)
1.5707963267948966