Cách sử dụng số phức trong python [đã đóng]


111

Tôi là một người mới toán học. Bây giờ tôi đang tìm hiểu sâu hơn về các kiểu dữ liệu Python. Tôi không thể hiểu cách sử dụng một số phức. Vui lòng cho tôi ví dụ về cách sử dụng số phức trong Python.


1
Khi bạn nói rằng bạn chưa quen với toán học, bạn có thể viết những gì bạn muốn làm trong ký hiệu toán học không?
mmmmmm

14
Tôi không nghĩ điều này nên được đóng lại. Tôi cũng thấy khó hiểu khi python sử dụng cú pháp tưởng tượng 'j' phổ biến trong kỹ thuật thay vì cú pháp 'i' trực quan hơn phổ biến trong toán học, thống kê, R, v.v. Câu trả lời đầu tiên bên dưới đã làm rất tốt việc giới thiệu điều đó.
Mittenchops

Có vẻ như một docbug hợp pháp trên Python help(complex)không hiển thị bất kỳ ví dụ nào, không giống như `nhập thập phân; trợ giúp (thập phân) '
smci

Câu trả lời:


188

Trong python, bạn có thể đặt 'j' hoặc 'J' sau một số để làm cho nó trở nên tưởng tượng, vì vậy bạn có thể viết các ký tự phức tạp một cách dễ dàng:

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

Hậu tố 'j' xuất phát từ kỹ thuật điện, trong đó biến 'i' thường được sử dụng cho dòng điện. ( Lý do được tìm thấy ở đây. )

Kiểu của một số phức làcomplex và bạn có thể sử dụng kiểu làm hàm tạo nếu bạn muốn:

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

Một số phức có một số trình truy cập tích hợp:

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

Một số hàm tích hợp hỗ trợ số phức:

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

Mô-đun tiêu chuẩncmath có nhiều chức năng xử lý các số phức:

>>> import cmath
>>> cmath.sin(2 + 3j)
(9.15449914691143-4.168906959966565j)

8
'i' cũng được sử dụng bởi các nhà toán học, vật lý và gần như tất cả các nhà khoa học khác. Nếu điều đó không đủ khó hiểu, một số sử dụng 'i' để biểu thị căn bậc hai "dương" của một, trong khi 'j' là căn bậc hai "âm" của một. Do đó tôi == -j. FYJ ...
jvriesem

13

Ví dụ sau cho các số phức phải tự giải thích bao gồm cả thông báo lỗi ở cuối

>>> 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
>>> 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.