Complex numbers in python
Asked Answered
L

3

170

Are complex numbers a supported data-type in Python? If so, how do you use them?

Leadsman answered 3/12, 2011 at 20:12 Comment(3)
As you say you are new to maths, can you write what you you want to do in mathematical notation?Gunnar
I don't think this should have been closed. I also found it confusing that python used the 'j' imaginary syntax common in engineering over the more intuitive 'i' syntax common in math, statistics, R, etc. The first answer below did a good job introducing that.Cadent
It seems a legitimate docbug on Python that help(complex) doesn't show any examples, unlike e.g. ` import decimal; help(decimal)`Outsert
T
260

In python, you can put ‘j’ or ‘J’ after a number to make it imaginary, so you can write complex literals easily:

>>> 1j
1j
>>> 1J
1j
>>> 1j * 1j
(-1+0j)

The ‘j’ suffix comes from electrical engineering, where the variable ‘i’ is usually used for current. (Reasoning found here.)

The type of a complex number is complex, and you can use the type as a constructor if you prefer:

>>> complex(2,3)
(2+3j)

A complex number has some built-in accessors:

>>> z = 2+3j
>>> z.real
2.0
>>> z.imag
3.0
>>> z.conjugate()
(2-3j)

Several built-in functions support complex numbers:

>>> abs(3 + 4j)
5.0
>>> pow(3 + 4j, 2)
(-7+24j)

The standard module cmath has more functions that handle complex numbers:

>>> import cmath
>>> cmath.sin(2 + 3j)
(9.15449914691143-4.168906959966565j)
Tribalism answered 3/12, 2011 at 20:20 Comment(3)
'i' is also used by mathematicians, physicists, and nearly all other scientists. If that isn't confusing enough, some use 'i' to represent the "positive" square root of one, whereas 'j' is the "negative" square root of one. Thus i == -j. FYJ...Leonaleonanie
@Leonaleonanie "the positive square root of one" is one. Do you mean they use i to represent the positive square root of negative one? and j to represent the negative square root of negative one?Annecy
The i/j argument for current is a bit weak, j is used for current density.Stepmother
P
19

The following example for complex numbers should be self explanatory including the error message at the end

>>> x=complex(1,2)
>>> print x
(1+2j)
>>> y=complex(3,4)
>>> print y
(3+4j)
>>> z=x+y
>>> print x
(1+2j)
>>> print z
(4+6j)
>>> z=x*y
>>> print z
(-5+10j)
>>> z=x/y
>>> print z
(0.44+0.08j)
>>> print x.conjugate()
(1-2j)
>>> print x.imag
2.0
>>> print x.real
1.0
>>> print x>y

Traceback (most recent call last):
  File "<pyshell#149>", line 1, in <module>
    print x>y
TypeError: no ordering relation is defined for complex numbers
>>> print x==y
False
>>> 
Presidency answered 3/12, 2011 at 20:18 Comment(0)
S
0

Yes, complex type is supported in Python.

For numbers, Python 3 supports 3 types int, float and complex types as shown below:

print(type(100), isinstance(100, int))
print(type(100.23), isinstance(100.23, float))
print(type(100 + 2j), isinstance(100 + 2j, complex))

Output:

<class 'int'> True
<class 'float'> True
<class 'complex'> True

For numbers, Python 2 supperts 4 types int, long, float and complex types as shown below:

print(type(100), isinstance(100, int))
print(type(10000000000000000000), isinstance(10000000000000000000, long))
print(type(100.23), isinstance(100.23, float))
print(type(100 + 2j), isinstance(100 + 2j, complex))

Output:

(<type 'int'>, True)
(<type 'long'>, True)
(<type 'float'>, True)
(<type 'complex'>, True)
Shirtmaker answered 24/11, 2022 at 3:18 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.