Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Phương thức phức tạp () trả về một số phức khi các bộ phận thực và tưởng tượng được cung cấp hoặc nó chuyển đổi một chuỗi thành một số phức.

Show

Cú pháp của

>>> 3 + 2j == 2j + 3
True
5 là:

complex([real[, imag]])

các tham số phức tạp ()

Nói chung, phương thức

>>> 3 + 2j == 2j + 3
True
5 có hai tham số:

  • THỰC SỰ - PHẦN THỰC SỰ. Nếu Real bị bỏ qua, nó mặc định là 0. - real part. If real is omitted, it defaults to 0.
  • Hình ảnh - Phần tưởng tượng. Nếu hình ảnh bị bỏ qua, nó mặc định là 0. - imaginary part. If imag is omitted, it defaults to 0.

Nếu tham số đầu tiên được truyền vào phương thức này là một chuỗi, nó sẽ được hiểu là một số phức. Trong trường hợp này, tham số thứ hai không nên được thông qua.


Trả về giá trị từ phức tạp ()

Theo đề xuất của tên, phương thức

>>> 3 + 2j == 2j + 3
True
5 trả về một số phức.

Nếu chuỗi được truyền vào phương thức này không phải là một số phức hợp hợp lệ, ngoại lệ

>>> 3 + 2j == 2j + 3
True
8 sẽ được nâng lên.

Lưu ý: Chuỗi được chuyển sang

>>> 3 + 2j == 2j + 3
True
5 phải ở dạng
>>> 3 - 2j == 3 + (-2j)
True
0 hoặc
>>> 3 - 2j == 3 + (-2j)
True
1
The string passed to
>>> 3 + 2j == 2j + 3
True
5 should be in the form
>>> 3 - 2j == 3 + (-2j)
True
0 or
>>> 3 - 2j == 3 + (-2j)
True
1


Ví dụ 1: Làm thế nào để tạo một số phức tạp trong Python?

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)

Đầu ra

(2-3j)
(1+0j)
0j
(5-9j)

Ví dụ 2: Tạo số phức mà không sử dụng phức tạp ()

Có thể tạo một số phức mà không cần sử dụng phương thức

>>> 3 + 2j == 2j + 3
True
5. Đối với điều đó, bạn phải đặt 'j' hoặc 'j' sau một số.

a = 2+3j
print('a =',a)
print('Type of a is',type(a))

b = -2j
print('b =',b)
print('Type of b is',type(a))

c = 0j
print('c =',c)
print('Type of c is',type(c))

Đầu ra

a = (2+3j)
Type of a is 
b = (-0-2j)
Type of b is 
c = 0j
Type of c is 

Hầu hết các ngôn ngữ lập trình đa năng không có hỗ trợ hoặc hỗ trợ hạn chế cho các số phức. Các tùy chọn điển hình của bạn là học một số công cụ chuyên dụng như MATLAB hoặc tìm thư viện của bên thứ ba. Python là một ngoại lệ hiếm hoi vì nó đi kèm với những con số phức tạp được tích hợp.complex numbers. Your typical options are learning some specialized tool like MATLAB or finding a third-party library. Python is a rare exception because it comes with complex numbers built in.

Mặc dù tên, những con số phức tạp không phải là phức tạp! Họ thuận tiện trong việc giải quyết các vấn đề thực tế mà bạn sẽ nhận được một hương vị trong hướng dẫn này. Youllll khám phá đồ họa vector và phân tích tần số âm thanh, nhưng các số phức tạp cũng có thể giúp vẽ các fractals, chẳng hạn như bộ Mandelbrot.vector graphics and sound frequency analysis, but complex numbers can also help in drawing fractals, such as the Mandelbrot set.

Trong hướng dẫn này, bạn sẽ học cách:

  • Xác định các số phức tạp với nghĩa đen trong Pythonliterals in Python
  • Biểu thị các số phức trong tọa độ hình chữ nhật và cựcrectangular and polar coordinates
  • Sử dụng các số phức tạp trong các biểu thức số họcarithmetic expressions
  • Tận dụng mô-đun
    >>> 3 - 2j == 3 + (-2j)
    True
    
    3 tích hợp
    >>> 3 - 2j == 3 + (-2j)
    True
    
    3 module
  • Dịch các công thức toán học trực tiếp sang mã Pythonmathematical formulas directly to Python code

Nếu bạn cần một sự bồi dưỡng nhanh hoặc giới thiệu nhẹ nhàng về lý thuyết về các số phức tạp, thì bạn có thể xem loạt video Khan Academy. Để tải xuống mã mẫu được sử dụng trong suốt hướng dẫn này, nhấp vào liên kết bên dưới:

Tạo các số phức tạp trong Python

Tạo và thao tác các số phức trong Python không khác nhiều so với các loại dữ liệu tích hợp khác, đặc biệt là các loại số. Nó có thể vì ngôn ngữ coi họ là công dân hạng nhất. Điều này có nghĩa là bạn có thể thể hiện các công thức toán học liên quan đến các số phức tạp với rất ít chi phí.

Python cho phép bạn sử dụng các số phức tạp trong các biểu thức số học và các hàm gọi trên chúng giống như bạn làm với các số khác trong Python. Nó dẫn đến cú pháp thanh lịch đọc gần giống như một cuốn sách giáo khoa toán học.

Số phức theo nghĩa đen

Cách nhanh nhất để xác định một số phức trong Python là bằng cách nhập trực tiếp theo nghĩa đen của nó vào mã nguồn:

Mặc dù điều này trông giống như một công thức đại số, biểu thức ở bên phải của dấu bằng đã là một giá trị cố định không cần đánh giá thêm. Khi bạn kiểm tra loại của nó, bạn sẽ xác nhận rằng nó thực sự là một số phức tạp:

>>>

>>> type(z)

Làm thế nào khác với việc thêm hai số với toán tử cộng? Một giveaway rõ ràng là chữ

>>> 3 - 2j == 3 + (-2j)
True
4 dán vào số thứ hai, điều này thay đổi hoàn toàn ý nghĩa của biểu thức. Nếu bạn xóa chữ cái, thay vào đó, bạn sẽ nhận được kết quả số nguyên quen thuộc: thay vào đó:

>>>

>>> z = 3 + 2

>>> type(z)

Làm thế nào khác với việc thêm hai số với toán tử cộng? Một giveaway rõ ràng là chữ

>>> 3 - 2j == 3 + (-2j)
True
4 dán vào số thứ hai, điều này thay đổi hoàn toàn ý nghĩa của biểu thức. Nếu bạn xóa chữ cái, thay vào đó, bạn sẽ nhận được kết quả số nguyên quen thuộc: thay vào đó:

>>>

>>> z = 3.14 + 2.71j
>>> type(z)

Làm thế nào khác với việc thêm hai số với toán tử cộng? Một giveaway rõ ràng là chữ

>>> 3 - 2j == 3 + (-2j)
True
4 dán vào số thứ hai, điều này thay đổi hoàn toàn ý nghĩa của biểu thức. Nếu bạn xóa chữ cái, thay vào đó, bạn sẽ nhận được kết quả số nguyên quen thuộc: thay vào đó:standard form, the algebraic form, or sometimes the canonical form, of a complex number. In Python, you can use either lowercase
>>> 3 - 2j == 3 + (-2j)
True
4 or uppercase
>>> 3 - 2j == 3 + (-2j)
True
6 in those literals.

Nhân tiện, bạn cũng có thể sử dụng các số điểm nổi để tạo các số phức tạp:

Các chữ số phức tạp trong Python bắt chước ký hiệu toán học, còn được gọi là dạng tiêu chuẩn, dạng đại số hoặc đôi khi là dạng chính tắc, của một số phức. Trong Python, bạn có thể sử dụng chữ thường

>>> 3 - 2j == 3 + (-2j)
True
4 hoặc chữ hoa
>>> 3 - 2j == 3 + (-2j)
True
6 trong các nghĩa đen đó.imaginary unit. You might feel a slight discomfort with Python’s convention if you have a mathematical background. However, there are a few reasons that can justify Python’s controversial choice:

  • Nếu bạn đã tìm hiểu về các số phức tạp trong lớp toán học, bạn có thể đã thấy chúng được thể hiện bằng cách sử dụng
    >>> 3 - 2j == 3 + (-2j)
    True
    
    7 thay vì
    >>> 3 - 2j == 3 + (-2j)
    True
    
    4. Nếu bạn tò mò về lý do tại sao Python sử dụng
    >>> 3 - 2j == 3 + (-2j)
    True
    
    4 thay vì
    >>> 3 - 2j == 3 + (-2j)
    True
    
    7, thì bạn có thể mở rộng phần thu gọn bên dưới để tìm hiểu thêm.
  • Ký hiệu truyền thống cho các số phức tạp sử dụng chữ cái
    >>> 3 - 2j == 3 + (-2j)
    True
    
    7 thay vì
    >>> 3 - 2j == 3 + (-2j)
    True
    
    4 vì nó là viết tắt của đơn vị tưởng tượng. Bạn có thể cảm thấy một sự khó chịu nhỏ với quy ước Python, nếu bạn có một nền tảng toán học. Tuy nhiên, có một vài lý do có thể biện minh cho sự lựa chọn gây tranh cãi của Python:
  • Đó là một quy ước đã được các kỹ sư thông qua để tránh các vụ va chạm tên với dòng điện, được biểu thị bằng chữ
    >>> 3 - 2j == 3 + (-2j)
    True
    
    7.

Trong tính toán, chữ

>>> 3 - 2j == 3 + (-2j)
True
7 thường được sử dụng cho biến lập chỉ mục trong các vòng lặp.

Chữ

>>> 3 - 2j == 3 + (-2j)
True
7 có thể dễ dàng bị nhầm lẫn với
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
06 hoặc
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
07 trong mã nguồn.

Điều này đã được đưa lên trên trình theo dõi lỗi Python, hơn một thập kỷ trước, và người tạo ra Python, chính Guido Van Rossum, đã đóng vấn đề này với nhận xét này:

Điều này sẽ không được sửa chữa. Đối với một điều, chữ cái ‘I, hoặc trường hợp trên Tôi trông quá giống như các chữ số. Cách các số được phân tích cú pháp bởi trình phân tích cú pháp ngôn ngữ (trong mã nguồn) hoặc theo các hàm tích hợp (int, float, phức tạp) không nên được định hình hoặc có thể định cấu hình theo bất kỳ cách nào; Điều đó yêu cầu những thất vọng lớn xuống đường. Nếu bạn muốn phân tích các số phức tạp bằng cách sử dụng ‘I, thay vì‘ J, bạn đã có sẵn rất nhiều giải pháp. (Nguồn)

>>>

>>> 3 + 2j == 2j + 3
True

Làm thế nào khác với việc thêm hai số với toán tử cộng? Một giveaway rõ ràng là chữ

>>> 3 - 2j == 3 + (-2j)
True
4 dán vào số thứ hai, điều này thay đổi hoàn toàn ý nghĩa của biểu thức. Nếu bạn xóa chữ cái, thay vào đó, bạn sẽ nhận được kết quả số nguyên quen thuộc: thay vào đó:

>>>

>>> 3 - 2j == 3 + (-2j)
True

Làm thế nào khác với việc thêm hai số với toán tử cộng? Một giveaway rõ ràng là chữ

>>> 3 - 2j == 3 + (-2j)
True
4 dán vào số thứ hai, điều này thay đổi hoàn toàn ý nghĩa của biểu thức. Nếu bạn xóa chữ cái, thay vào đó, bạn sẽ nhận được kết quả số nguyên quen thuộc: thay vào đó:

>>>

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
0

Làm thế nào khác với việc thêm hai số với toán tử cộng? Một giveaway rõ ràng là chữ

>>> 3 - 2j == 3 + (-2j)
True
4 dán vào số thứ hai, điều này thay đổi hoàn toàn ý nghĩa của biểu thức. Nếu bạn xóa chữ cái, thay vào đó, bạn sẽ nhận được kết quả số nguyên quen thuộc: thay vào đó:

>>>

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
1

Nói đúng ra, từ quan điểm toán học, bạn đã tạo ra một số tưởng tượng thuần túy, nhưng Python có thể đại diện cho nó như một loại dữ liệu độc lập. Do đó, không có phần khác, nó chỉ là một số phức.imaginary number, but Python can’t represent it as a stand-alone data type. Therefore, without the other part, it’s just a complex number .

Làm thế nào về điều ngược lại? Để tạo một số phức mà không có phần tưởng tượng, bạn có thể tận dụng 0 và thêm hoặc trừ nó như vậy:

>>>

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
2

Trong thực tế, cả hai phần của số phức luôn luôn ở đó. Khi bạn không thấy một, điều đó có nghĩa là nó có giá trị bằng không. Hãy để kiểm tra những gì xảy ra khi bạn thử nhét nhiều thuật ngữ vào tổng hơn trước:

>>>

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
3

Lần này, biểu hiện của bạn không còn là một nghĩa đen vì Python đã đánh giá nó thành một số phức chỉ bao gồm hai phần. Hãy nhớ rằng các quy tắc cơ bản của đại số chuyển sang các số phức tạp, vì vậy nếu bạn nhóm các thuật ngữ tương tự và áp dụng bổ sung theo thành phần, thì bạn sẽ kết thúc với

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
11.

Lưu ý cách Python hiển thị các số phức theo mặc định. Biểu diễn văn bản của họ chứa một cặp dấu ngoặc đơn, chữ thường

>>> 3 - 2j == 3 + (-2j)
True
4 và không có khoảng trắng. Ngoài ra, phần tưởng tượng đứng thứ hai.

Những con số phức tạp cũng là những con số tưởng tượng thuần túy xuất hiện mà không có dấu ngoặc đơn và chỉ tiết lộ phần tưởng tượng của chúng:

>>>

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
4

Điều này giúp phân biệt các số tưởng tượng với hầu hết các số phức tạp được tạo thành từ các phần thực và tưởng tượng.

>>> 3 + 2j == 2j + 3 True 5 Chức năng nhà máy

Python có chức năng tích hợp,

>>> 3 + 2j == 2j + 3
True
5, mà bạn có thể sử dụng thay thế cho số lượng phức tạp theo nghĩa đen:

Trong hình thức này, nó giống như một tuple hoặc một cặp số thông thường được đặt hàng. Sự tương tự là rất xa. Các số phức tạp có một cách giải thích hình học trong hệ tọa độ Cartesian mà bạn sẽ khám phá một chút. Bạn có thể nghĩ về những con số phức tạp là hai chiều.Cartesian coordinate system that you’ll explore in a bit. You can think of complex numbers as two-dimensional.

Hàm nhà máy số phức tạp chấp nhận hai tham số số. Phần đầu tiên đại diện cho phần thực, trong khi phần thứ hai đại diện cho phần tưởng tượng được biểu thị bằng chữ cái

>>> 3 - 2j == 3 + (-2j)
True
4 trong bản theo nghĩa đen mà bạn đã thấy trước đó:real part, while the second one represents the imaginary part denoted with the letter
>>> 3 - 2j == 3 + (-2j)
True
4 in the literal you saw earlier:

>>>

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
5

Cả hai tham số đều là tùy chọn, với các giá trị mặc định bằng 0, điều này làm cho việc xác định các số phức hơn mà không có phần tưởng tượng hoặc cả phần thực và phần tưởng tượng:

>>>

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
6

Phiên bản đơn lẻ có thể hữu ích trong việc đúc loại. Ví dụ: bạn có thể vượt qua một giá trị không phải là một chuỗi theo nghĩa đen để có được một đối tượng

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
16 tương ứng. Lưu ý rằng chuỗi có thể chứa bất kỳ khoảng trắng nào, mặc dù:type casting. For example, you can pass a nonnumeric value like a string literal to obtain a corresponding
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
16 object. Note that the string can’t contain any whitespace, though:

>>>

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
7

Sau đó, bạn sẽ tìm ra cách làm cho các lớp học của bạn tương thích với cơ chế đúc loại này. Thật thú vị, khi bạn chuyển một số phức lên

>>> 3 + 2j == 2j + 3
True
5, bạn sẽ nhận lại được thể hiện tương tự:

>>>

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
8

Điều đó phù hợp với cách các loại số khác trong Python hoạt động bởi vì tất cả chúng đều bất biến. Để tạo một bản sao riêng biệt của một số phức, bạn phải gọi lại chức năng với cả hai đối số hoặc khai báo một biến khác với số phức theo nghĩa đen:immutable. To make a distinct copy of a complex number, you must call the function with both arguments again or declare another variable with the complex number literal:

>>>

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
9

Khi bạn cung cấp hai đối số cho hàm, chúng phải luôn là số, chẳng hạn như

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
18,
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
19 hoặc
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
16. Nếu không, bạn sẽ nhận được một lỗi thời gian chạy. Về mặt kỹ thuật,
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
21 là một lớp con của
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
18, vì vậy nó cũng sẽ hoạt động:

>>>

(2-3j)
(1+0j)
0j
(5-9j)
0

Mọi thứ dường như kỳ lạ hơn khi bạn cung cấp chức năng nhà máy

>>> 3 + 2j == 2j + 3
True
5 với các số phức tạp như đối số. Tuy nhiên, nếu bạn chỉ cung cấp đối số đầu tiên, nó sẽ hoạt động như một proxy như trước:

>>>

(2-3j)
(1+0j)
0j
(5-9j)
1

Tuy nhiên, khi có hai đối số có mặt và ít nhất một trong số chúng là một số phức, bạn sẽ nhận được kết quả có thể khó giải thích từ cái nhìn đầu tiên:

>>>

(2-3j)
(1+0j)
0j
(5-9j)
2

Để có được câu trả lời, hãy để Lừa xem qua chức năng của nhà máy, tài liệu trực tuyến hoặc tài liệu trực tuyến, điều này giải thích những gì diễn ra dưới mui xe khi bạn gọi

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
24:

Trả về một số phức với giá trị real + hình ảnh*1j hoặc chuyển đổi một chuỗi hoặc số thành một số phức. (Nguồn)

Trong giải thích này,

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
25 và
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
26 là tên của các đối số chức năng. Đối số thứ hai được nhân với đơn vị tưởng tượng
>>> 3 - 2j == 3 + (-2j)
True
4 và kết quả được thêm vào đối số đầu tiên. Don Tiết lo lắng nếu nó vẫn không có ý nghĩa gì. Bạn có thể quay lại phần này khi bạn đọc về số học phức tạp. Các quy tắc mà bạn sẽ tìm hiểu về sẽ làm cho điều này đơn giản.

Khi nào bạn muốn sử dụng chức năng nhà máy

>>> 3 + 2j == 2j + 3
True
5 qua nghĩa đen? Nó phụ thuộc, nhưng việc gọi hàm có thể thuận tiện hơn khi bạn xử lý dữ liệu được tạo động, chẳng hạn.

Làm quen với các số phức tạp Python

Trong toán học, các số phức là một siêu số thực, điều đó có nghĩa là mỗi số thực cũng là một số phức tạp có phần tưởng tượng bằng không. Các mô hình Python mối quan hệ này thông qua một khái niệm gọi là tháp số, được mô tả trong PEP 3141:numeric tower, described in PEP 3141:

>>>

(2-3j)
(1+0j)
0j
(5-9j)
3

Mô-đun

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
29 tích hợp xác định một hệ thống phân cấp của các loại số thông qua các lớp trừu tượng có thể được sử dụng để kiểm tra loại và phân loại số. Ví dụ: để xác định xem một giá trị có thuộc về một tập hợp số cụ thể hay không, bạn có thể gọi
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
30 trên đó:abstract classes that can be used for type checking and classifying numbers. For example, to determine if a value belongs to a specific set of numbers, you can call
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
30 on it:

>>>

(2-3j)
(1+0j)
0j
(5-9j)
4

Giá trị điểm nổi

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
31 là một số thực cũng là một số phức nhưng không phải là một tích phân. Lưu ý rằng bạn có thể sử dụng các loại tích hợp trực tiếp trong một thử nghiệm như vậy:

>>>

(2-3j)
(1+0j)
0j
(5-9j)
5

Sự khác biệt giữa

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
16 và
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
33 là chúng thuộc về các nhánh riêng biệt trong cây phân cấp loại và sau là một lớp cơ sở trừu tượng mà không có bất kỳ việc thực hiện nào:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?
Nhập phân cấp cho các số trong Python

Các lớp cơ sở trừu tượng, được biểu thị bằng màu đỏ trên sơ đồ trên, có thể bỏ qua cơ chế kiểm tra kế thừa thông thường bằng cách đăng ký các lớp không liên quan làm các lớp con ảo của chúng. Đó là lý do tại sao một giá trị điểm nổi trong ví dụ dường như là một ví dụ là

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
33 nhưng không phải
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
16.

Truy cập các phần thực và tưởng tượng

Để có được các phần thực và tưởng tượng của một số phức trong Python, bạn có thể đạt được các thuộc tính

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
36 và
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
37 tương ứng:

>>>

(2-3j)
(1+0j)
0j
(5-9j)
6

Cả hai thuộc tính đều chỉ đọc được vì các số phức là bất biến, vì vậy cố gắng gán một giá trị mới cho một trong số chúng sẽ thất bại:read-only because complex numbers are immutable, so trying to assign a new value to either of them will fail:

>>>

(2-3j)
(1+0j)
0j
(5-9j)
7

Vì mỗi số trong Python là một loại cụ thể hơn của một số phức, các thuộc tính và phương thức được xác định trong

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
33 cũng có sẵn trong tất cả các loại số, bao gồm
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
18 và
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
19:

>>>

(2-3j)
(1+0j)
0j
(5-9j)
8

Phần tưởng tượng của những con số như vậy luôn luôn bằng không.

Tính toán liên hợp của một số phức

Các con số phức tạp Python chỉ có ba thành viên công cộng. Ngoài các thuộc tính

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
36 và
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
37, chúng phơi bày phương pháp
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
43, lật dấu hiệu của phần tưởng tượng:

>>>

(2-3j)
(1+0j)
0j
(5-9j)
9

Đối với các số có phần tưởng tượng bằng 0, nó đã giành được bất kỳ hiệu ứng nào:

>>>

a = 2+3j
print('a =',a)
print('Type of a is',type(a))

b = -2j
print('b =',b)
print('Type of b is',type(a))

c = 0j
print('c =',c)
print('Type of c is',type(c))
0

Hoạt động này là nghịch đảo của riêng nó, vì vậy gọi nó hai lần sẽ giúp bạn có số ban đầu mà bạn đã bắt đầu với:

>>>

a = 2+3j
print('a =',a)
print('Type of a is',type(a))

b = -2j
print('b =',b)
print('Type of b is',type(a))

c = 0j
print('c =',c)
print('Type of c is',type(c))
1

Mặc dù có vẻ như ít giá trị, nhưng liên hợp phức tạp có một vài đặc tính số học hữu ích có thể giúp tính toán sự phân chia của hai số phức tạp với bút và giấy, trong số nhiều thứ khác.

Số lượng phức tạp số học

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
16 là loại dữ liệu gốc trong Python, bạn có thể cắm các số phức tạp vào các biểu thức số học và gọi nhiều hàm tích hợp trên chúng. Các hàm nâng cao hơn cho các số phức được xác định trong mô -đun
>>> 3 - 2j == 3 + (-2j)
True
3, là một phần của thư viện tiêu chuẩn. Bạn sẽ nhận được một giới thiệu về nó trong phần sau của hướng dẫn này.arithmetic expressions and call many of the built-in functions on them. More advanced functions for complex numbers are defined in the
>>> 3 - 2j == 3 + (-2j)
True
3 module, which is part of the standard library. You’ll get an introduction to it in a later part of this tutorial.

Hiện tại, việc ghi nhớ một quy tắc duy nhất sẽ cho phép bạn áp dụng kiến ​​thức về số học của trường tiểu học để tính toán các hoạt động cơ bản liên quan đến các số phức tạp. Quy tắc cần nhớ là định nghĩa của đơn vị tưởng tượng, thỏa mãn phương trình sau:imaginary unit, which satisfies the following equation:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Nó không có vẻ đúng khi bạn nghĩ về

>>> 3 - 2j == 3 + (-2j)
True
4 như một số thực, nhưng don hoảng loạn. Nếu bạn bỏ qua nó một lúc và thay thế mọi lần xuất hiện của
>>> 3 - 2j == 3 + (-2j)
True
4
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
48 bằng
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
49 như thể nó là một hằng số, thì bạn sẽ được đặt. Hãy để xem cách hoạt động của nó.

Phép cộng

Tổng của hai hoặc nhiều số phức tạp tương đương với việc thêm thành phần thực tế và tưởng tượng của chúng:

>>>

a = 2+3j
print('a =',a)
print('Type of a is',type(a))

b = -2j
print('b =',b)
print('Type of b is',type(a))

c = 0j
print('c =',c)
print('Type of c is',type(c))
2

Trước đó, bạn phát hiện ra rằng các biểu thức đại số bao gồm các số thực và tưởng tượng tuân theo các quy tắc tiêu chuẩn của đại số. Khi bạn viết nó xuống đại số, bạn sẽ có thể áp dụng tài sản phân phối và đơn giản hóa công thức bằng cách đưa ra và nhóm các thuật ngữ chung:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Python tự động quảng bá toán hạng lên kiểu dữ liệu

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
16 khi bạn thêm các giá trị của các loại số hỗn hợp:

>>>

a = 2+3j
print('a =',a)
print('Type of a is',type(a))

b = -2j
print('b =',b)
print('Type of b is',type(a))

c = 0j
print('c =',c)
print('Type of c is',type(c))
3

Điều đó tương tự như chuyển đổi ngầm từ

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
18 sang
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
19, mà bạn có thể quen thuộc hơn.

Phép trừ

Trừ các số phức là tương tự như thêm chúng, điều đó có nghĩa là bạn cũng có thể áp dụng phần tử thông minh:

>>>

a = 2+3j
print('a =',a)
print('Type of a is',type(a))

b = -2j
print('b =',b)
print('Type of b is',type(a))

c = 0j
print('c =',c)
print('Type of c is',type(c))
4

Tuy nhiên, không giống như tổng, thứ tự của các toán hạng là đáng kể và mang lại kết quả khác nhau giống như với số thực:

>>>

a = 2+3j
print('a =',a)
print('Type of a is',type(a))

b = -2j
print('b =',b)
print('Type of b is',type(a))

c = 0j
print('c =',c)
print('Type of c is',type(c))
5

Bạn cũng có thể sử dụng toán tử Minus Min (-) để tạo âm của một số phức:unary minus operator (-) to make the negative of a complex number:

>>>

a = 2+3j
print('a =',a)
print('Type of a is',type(a))

b = -2j
print('b =',b)
print('Type of b is',type(a))

c = 0j
print('c =',c)
print('Type of c is',type(c))
6

Điều này đảo ngược cả phần thực và phần tưởng tượng của số phức.

Phép nhân

Sản phẩm của hai hoặc nhiều số phức tạp trở nên thú vị hơn:

>>>

a = 2+3j
print('a =',a)
print('Type of a is',type(a))

b = -2j
print('b =',b)
print('Type of b is',type(a))

c = 0j
print('c =',c)
print('Type of c is',type(c))
7

Làm thế nào trên trái đất bạn kết thúc với một số âm chỉ trong số các số tích cực? Để trả lời câu hỏi này, bạn phải nhớ lại định nghĩa của đơn vị tưởng tượng và viết lại biểu thức theo các phần thực và tưởng tượng:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Quan sát chính để thực hiện là

>>> 3 - 2j == 3 + (-2j)
True
4 lần
>>> 3 - 2j == 3 + (-2j)
True
4 cung cấp
>>> 3 - 2j == 3 + (-2j)
True
4
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
48, có thể được thay thế bằng
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
49. Điều này đảo ngược dấu hiệu của một trong các bản tóm tắt, trong khi phần còn lại của các quy tắc vẫn giống hệt như trước đây.

Phân công

Chia các số phức tạp có thể trông đáng sợ ở cuộc gặp gỡ đầu tiên:

>>>

a = 2+3j
print('a =',a)
print('Type of a is',type(a))

b = -2j
print('b =',b)
print('Type of b is',type(a))

c = 0j
print('c =',c)
print('Type of c is',type(c))
8

Dù bạn có tin hay không, bạn có thể nhận được kết quả tương tự bằng cách sử dụng không có gì ngoài bút và giấy! .

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Mẫu số trở thành một mô đun bình phương của ước số. Bạn sẽ tìm hiểu thêm về mô đun của các số phức tạp sau này. Khi bạn tiếp tục lấy công thức, đây là những gì bạn sẽ nhận được:modulus of the divisor. You’ll learn more about the modulus of complex numbers later. When you continue deriving the formula, this is what you’ll get:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Lưu ý rằng các số phức tạp không hỗ trợ phân chia sàn, còn được gọi là phân chia số nguyên:

>>>

a = 2+3j
print('a =',a)
print('Type of a is',type(a))

b = -2j
print('b =',b)
print('Type of b is',type(a))

c = 0j
print('c =',c)
print('Type of c is',type(c))
9

Dù bạn có tin hay không, bạn có thể nhận được kết quả tương tự bằng cách sử dụng không có gì ngoài bút và giấy! .

Mẫu số trở thành một mô đun bình phương của ước số. Bạn sẽ tìm hiểu thêm về mô đun của các số phức tạp sau này. Khi bạn tiếp tục lấy công thức, đây là những gì bạn sẽ nhận được:

Lưu ý rằng các số phức tạp không hỗ trợ phân chia sàn, còn được gọi là phân chia số nguyên:exponentiation operator (

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
58) or the built-in
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
59 but not the one defined in the
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
60 module, which only supports floating-point values:

>>>

a = (2+3j)
Type of a is 
b = (-0-2j)
Type of b is 
c = 0j
Type of c is 
0

Dù bạn có tin hay không, bạn có thể nhận được kết quả tương tự bằng cách sử dụng không có gì ngoài bút và giấy! .base and the exponent can be of any numeric types, including integer, floating-point, imaginary, or complex:

>>>

a = (2+3j)
Type of a is 
b = (-0-2j)
Type of b is 
c = 0j
Type of c is 
1

Dù bạn có tin hay không, bạn có thể nhận được kết quả tương tự bằng cách sử dụng không có gì ngoài bút và giấy! .trigonometric form and calculate the power using some basic trigonometry. If you’re interested in the math involved, check out De Moivre’s formula, which lets you do that.

Mẫu số trở thành một mô đun bình phương của ước số. Bạn sẽ tìm hiểu thêm về mô đun của các số phức tạp sau này. Khi bạn tiếp tục lấy công thức, đây là những gì bạn sẽ nhận được:

Lưu ý rằng các số phức tạp không hỗ trợ phân chia sàn, còn được gọi là phân chia số nguyên:points or vectors on a Euclidean plane in the Cartesian or rectangular coordinate system:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Điều này được sử dụng để làm việc trong Python 2.x nhưng sau đó đã được gỡ bỏ để tránh sự mơ hồ.Gauss plane or Argand diagram, represents the real part of a complex number, while the Y-axis represents its imaginary part.

Số mũ

Bạn có thể nâng các số phức lên một nguồn sử dụng toán tử số liệu nhị phân (z = complex(2, -3) print(z) z = complex(1) print(z) z = complex() print(z) z = complex('5-9j') print(z)58) hoặc z = complex(2, -3) print(z) z = complex(1) print(z) z = complex() print(z) z = complex('5-9j') print(z)59 tích hợp nhưng không phải là định nghĩa trong mô-đun z = complex(2, -3) print(z) z = complex(1) print(z) z = complex() print(z) z = complex('5-9j') print(z)60, chỉ hỗ trợ các giá trị dấu phẩy động:

Cả cơ sở và số mũ có thể thuộc bất kỳ loại số nào, bao gồm số nguyên, điểm nổi, tưởng tượng hoặc phức tạp:

  1. Số lượng nhân thủ công của các số phức tạp trở nên rất khó khăn khi chúng được thể hiện ở dạng tiêu chuẩn. Nó thuận tiện hơn nhiều để viết lại số ở dạng lượng giác và tính năng lượng bằng cách sử dụng một số lượng giác cơ bản. Nếu bạn quan tâm đến toán học liên quan, hãy xem công thức De Moivre, cho phép bạn làm điều đó. 25° 45’ 42.054” N, 80° 11’ 30.438” W
  2. Sử dụng các số phức python làm vectơ 2D 18° 27’ 58.8” N, 66° 6’ 20.598” W
  3. Bạn có thể hình dung các số phức tạp dưới dạng điểm hoặc vectơ trên mặt phẳng Euclide trong hệ tọa độ Cartesian hoặc hình chữ nhật: 32° 17’ 41.64” N, 64° 46’ 58.908” W

Trục X trên mặt phẳng phức, còn được gọi là mặt phẳng Gauss hoặc sơ đồ Argand, đại diện cho phần thực của một số phức, trong khi trục y đại diện cho phần tưởng tượng của nó.latitude is the vertical coordinate and the longitude is the horizontal one, it might be more convenient to switch them around to follow the traditional order of the Cartesian coordinates:

a = (2+3j)
Type of a is 
b = (-0-2j)
Type of b is 
c = 0j
Type of c is 
2

Thực tế này dẫn đến một trong những tính năng thú vị nhất của loại dữ liệu

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
16 trong Python, thể hiện sự triển khai thô sơ của một vectơ hai chiều miễn phí. Mặc dù không phải tất cả các hoạt động đều hoạt động theo cùng một cách trong cả hai, các vectơ và số phức đều có chung nhiều điểm tương đồng.

Nhận tọa độspherical coordinates. To correctly project them onto a flat plane, you’d need to account for the curvature of Earth. One of the first map projections used in cartography was the Mercator projection, which helped sailors navigate their ships. But let’s ignore all that and assume that values are already expressed in the rectangular coordinate system.

Tam giác Bermuda là một khu vực huyền thoại được biết đến với các hiện tượng huyền bí trải dài trên khắp mũi phía nam của Florida, Puerto Rico và hòn đảo nhỏ của Bermuda. Các đỉnh của nó được chỉ định xấp xỉ bởi ba thành phố lớn có tọa độ địa lý như sau:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Miami: 25 ° 45, 42.054 N N, 80 ° 11, 30.438

San Juan: 18 ° 27, 58,8 N, 66 ° 6, 20.598

a = (2+3j)
Type of a is 
b = (-0-2j)
Type of b is 
c = 0j
Type of c is 
3

Hamilton: 32 ° 17, 41,64 N N, 64 ° 46, 58.908

Sau khi chuyển đổi các tọa độ này thành các độ thập phân, bạn sẽ kết thúc với hai số điểm nổi cho mỗi thành phố. Bạn có thể sử dụng kiểu dữ liệu z = complex(2, -3) print(z) z = complex(1) print(z) z = complex() print(z) z = complex('5-9j') print(z)16 để lưu trữ các cặp số đã đặt hàng. Vì vĩ độ là tọa độ dọc và kinh độ là chiều ngang, nên có thể thuận tiện hơn khi chuyển chúng xung quanh để tuân theo thứ tự truyền thống của tọa độ Cartesian:

Các giá trị kinh độ âm đại diện cho bán cầu tây, trong khi các giá trị vĩ độ dương đại diện cho bán cầu bắc.magnitude, also known as the modulus or radius of a complex number, is the length of the vector that depicts it on a complex plane:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Hãy nhớ rằng đây là những tọa độ hình cầu. Để chiếu chính xác chúng lên một mặt phẳng phẳng, bạn cần phải tính đến độ cong của Trái đất. Một trong những phép chiếu bản đồ đầu tiên được sử dụng trong bản đồ là phép chiếu Mercator, giúp các thủy thủ điều hướng tàu của họ. Nhưng hãy để Lừa bỏ qua tất cả những điều đó và cho rằng các giá trị đã được thể hiện trong hệ tọa độ hình chữ nhật.

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Bạn sẽ nghĩ rằng Python sẽ cho phép bạn tính toán độ dài của một vectơ như vậy với

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
64 tích hợp, nhưng đó không phải là trường hợp. Để có được độ lớn của một số phức, bạn phải gọi một hàm toàn cầu khác có tên
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
65, thường được sử dụng để tính giá trị tuyệt đối của một số:

>>>

a = (2+3j)
Type of a is 
b = (-0-2j)
Type of b is 
c = 0j
Type of c is 
4

Hàm này loại bỏ dấu hiệu từ các số nguyên mà bạn chuyển vào, nhưng đối với các số phức, nó trả về độ lớn hoặc chiều dài vectơ:

>>>

a = (2+3j)
Type of a is 
b = (-0-2j)
Type of b is 
c = 0j
Type of c is 
5

Hàm này loại bỏ dấu hiệu từ các số nguyên mà bạn chuyển vào, nhưng đối với các số phức, nó trả về độ lớn hoặc chiều dài vectơ:

Bạn có thể nhớ từ một phần trước đó rằng một số phức được nhân với liên hợp của nó tạo ra bình phương cường độ của nó.

Tìm khoảng cách giữa hai điểmgeometric center and the distances to it from the three cities that form its boundaries. First, you need to sum all coordinates and divide the result by their count to take the average:

a = (2+3j)
Type of a is 
b = (-0-2j)
Type of b is 
c = 0j
Type of c is 
6

Hãy cùng tìm thấy trung tâm hình học của Tam giác Bermuda và khoảng cách với nó từ ba thành phố tạo thành ranh giới của nó. Đầu tiên, bạn cần tổng hợp tất cả các tọa độ và chia kết quả cho số lượng của họ để lấy trung bình:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Điều này sẽ cung cấp cho bạn một điểm nằm ở Đại Tây Dương, ở đâu đó trong Tam giác:

a = (2+3j)
Type of a is 
b = (-0-2j)
Type of b is 
c = 0j
Type of c is 
7

Bây giờ bạn có thể tạo các vectơ neo ở các thành phố và hướng về trung tâm hình học của tam giác. Các vectơ được tạo bằng cách trừ nguồn từ điểm đích:

>>>

a = (2+3j)
Type of a is 
b = (-0-2j)
Type of b is 
c = 0j
Type of c is 
8

Hàm này loại bỏ dấu hiệu từ các số nguyên mà bạn chuyển vào, nhưng đối với các số phức, nó trả về độ lớn hoặc chiều dài vectơ:

Bạn có thể nhớ từ một phần trước đó rằng một số phức được nhân với liên hợp của nó tạo ra bình phương cường độ của nó.

Tìm khoảng cách giữa hai điểmtranslated by the length of the vector indicated by the geometric center but in the opposite direction:

a = (2+3j)
Type of a is 
b = (-0-2j)
Type of b is 
c = 0j
Type of c is 
9

Hãy cùng tìm thấy trung tâm hình học của Tam giác Bermuda và khoảng cách với nó từ ba thành phố tạo thành ranh giới của nó. Đầu tiên, bạn cần tổng hợp tất cả các tọa độ và chia kết quả cho số lượng của họ để lấy trung bình:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Điều này sẽ cung cấp cho bạn một điểm nằm ở Đại Tây Dương, ở đâu đó trong Tam giác:flip it horizontally, you’ll have to use the negative of the real part, which corresponds to the horizontal direction. To flip it vertically, you’ll take the negative of the imaginary part:

>>> type(z)

0

Bây giờ bạn có thể tạo các vectơ neo ở các thành phố và hướng về trung tâm hình học của tam giác. Các vectơ được tạo bằng cách trừ nguồn từ điểm đích:

>>> type(z)

1

Vì bạn trừ các số phức, mỗi vectơ cũng là một số phức tạp được tạo thành từ hai phần. Để có được khoảng cách của bạn, hãy tính độ lớn của từng vectơ:

>>> type(z)

2

Những chiều dài vector này không phản ánh khoảng cách có ý nghĩa nhưng là xấp xỉ tốt cho một ví dụ đồ chơi như thế này. Để thể hiện kết quả chính xác trong các đơn vị hữu hình, bạn phải chuyển đổi tọa độ từ hình cầu sang hình chữ nhật trước hoặc tính khoảng cách bằng phương pháp vòng tròn lớn thay thế.

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Dịch, lật, mở rộng và xoay is similar to translating, but instead of adding an offset, you’re going to multiply each vertex by a constant factor, which must be a real number:

>>> type(z)

3

Có thể làm phiền bạn rằng tam giác xuất hiện trong phần tư thứ hai của hệ tọa độ Cartesian. Hãy để di chuyển nó để trung tâm hình học của nó phù hợp với nguồn gốc. Tất cả ba đỉnh sẽ được dịch theo chiều dài của vectơ được biểu thị bởi trung tâm hình học nhưng theo hướng ngược lại:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Lưu ý rằng bạn có thể thêm hai số phức tạp lại với nhau, thực hiện bổ sung yếu tố của chúng. Đây là một phép biến đổi affine vì nó không thay đổi hình dạng của tam giác hoặc vị trí tương đối của các đỉnh của nó:rotating it around the coordinate system’s origin. That’s vastly different from how you’d typically multiply vectors by each other. For example, a dot product of two vectors will result in a scalar, while their cross product returns a new vector in three-dimensional space, which is perpendicular to the surface they define.

Một phản xạ gương của tam giác xung quanh trục thực hoặc tưởng tượng đòi hỏi phải đảo ngược thành phần tương ứng trong các đỉnh của nó. Ví dụ, để lật nó theo chiều ngang, bạn sẽ phải sử dụng âm của phần thực, tương ứng với hướng ngang. Để lật nó theo chiều dọc, bạn sẽ lấy phần tiêu cực của phần tưởng tượng:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Cái sau về cơ bản giống như tính toán một số liên hợp phức, do đó bạn có thể gọi

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
43 trên mỗi đỉnh để thực hiện công việc khó khăn cho bạn:

Đương nhiên, không có gì để ngăn bạn áp dụng đối xứng theo cả hai hướng hoặc cả hai hướng đồng thời. Trong trường hợp như vậy, bạn có thể sử dụng toán tử trừ Unary Minus trước số phức để lật các phần thực và tưởng tượng của nó:Đi trước và fiddle với các kết hợp lật khác nhau bằng cách sử dụng máy tính xách tay Jupyter tương tác có sẵn trong các vật liệu có thể tải xuống. Ở đây, cách hình tam giác sẽ trông như thế nào khi bạn lật nó dọc theo cả hai trục:Tỷ lệ tương tự như dịch, nhưng thay vì thêm một phần bù, bạn sẽ nhân lên mỗi đỉnh với một hệ số không đổi, phải là một số thực:Làm như vậy dẫn đến việc nhân cả hai thành phần của từng số phức với cùng một lượng. Nó sẽ kéo dài tam giác bermuda của bạn, làm cho nó trông lớn hơn trên cốt truyện:Mặt khác, nhân các đỉnh tam giác với một số phức tạp khác, có tác dụng xoay nó xung quanh nguồn gốc hệ tọa độ. Điều đó rất khác biệt so với cách bạn thường nhân các vectơ với nhau. Ví dụ, một sản phẩm chấm của hai vectơ sẽ dẫn đến một vô hướng, trong khi sản phẩm chéo của chúng trả lại một vectơ mới trong không gian ba chiều, vuông góc với bề mặt mà chúng xác định.
0 Khi bạn nhân các đỉnh với đơn vị tưởng tượng, nó sẽ xoay tam giác 90 ° ngược chiều kim đồng hồ. Nếu bạn tiếp tục lặp lại nó, cuối cùng bạn sẽ đến nơi bạn bắt đầu:Làm thế nào để bạn tìm thấy một số phức tạp cụ thể sẽ xoay một số phức khác theo bất kỳ góc mong muốn nào khi cả hai được nhân? Đầu tiên, hãy xem bảng sau, tóm tắt các vòng quay liên tiếp bằng 90 °:Xoay vòng 90 °1
1 Tổng gócCông thứcSố mũGiá trị
2 0 °z
>>> 3 - 2j == 3 + (-2j)
True
40
-1
3 90 °Z ×
>>> 3 - 2j == 3 + (-2j)
True
4
>>> 3 - 2j == 3 + (-2j)
True
43
-________ 94
4 360 °Z ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4
>>> 3 - 2j == 3 + (-2j)
True
44
1
5 450 °Z ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4
>>> 3 - 2j == 3 + (-2j)
True
45
>>> 3 - 2j == 3 + (-2j)
True
4
6 540 °Z ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4
>>> 3 - 2j == 3 + (-2j)
True
46
-1
7 630 °Z ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4
>>> 3 - 2j == 3 + (-2j)
True
47
-________ 94
8 720 °Z ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4 ×
>>> 3 - 2j == 3 + (-2j)
True
4
>>> 3 - 2j == 3 + (-2j)
True
48
1

Khi bạn thể hiện phép nhân lặp đi lặp lại bằng

>>> 3 - 2j == 3 + (-2j)
True
4 về mặt số mũ dương, thì một mẫu xuất hiện. Lưu ý cách nâng đơn vị tưởng tượng lên các quyền hạn tiếp theo khiến nó đi qua cùng một giá trị nhiều lần. Bạn có thể ngoại suy điều này lên các số mũ phân đoạn và mong đợi chúng tương ứng với các góc trung gian.

Ví dụ, số mũ giữa vòng quay đầu tiên bằng 0,5 và biểu thị góc 45 °:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Vì vậy, nếu bạn biết rằng một sức mạnh của một đại diện cho góc phù hợp và bất cứ điều gì ở giữa các thang đo theo tỷ lệ, thì bạn có thể lấy được công thức chung này cho các vòng quay tùy ý:

>>> type(z)

4

Lưu ý rằng việc xoay trở nên tự nhiên hơn khi bạn thể hiện các số phức tạp của bạn trong tọa độ cực, đã mô tả góc. Sau đó, bạn có thể tận dụng hình thức theo cấp số nhân để làm cho các tính toán đơn giản hơn:exponential form to make the calculations more straightforward:

Có hai cách để xoay một số bằng tọa độ cực:

>>> type(z)

5

Bạn có thể tổng hợp các góc hoặc nhân số phức của bạn với một vectơ đơn vị.

Bạn sẽ tìm hiểu thêm về những người trong phần tiếp theo.

Khám phá mô -đun toán học cho các số phức: >>> 3 - 2j == 3 + (-2j) True 3

Bạn đã thấy rằng một số chức năng tích hợp như

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
65 và
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
59 chấp nhận các số phức tạp, trong khi các chức năng khác. Ví dụ: bạn có thể
(2-3j)
(1+0j)
0j
(5-9j)
20 một số phức tạp vì một hoạt động như vậy không có ý nghĩa:

>>>

>>> type(z)

6

Nhiều chức năng toán học tiên tiến như hàm lượng giác, hyperbolic hoặc logarit có sẵn trong thư viện tiêu chuẩn. Đáng buồn thay, ngay cả khi bạn biết mọi thứ về mô -đun Python

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
60, nó đã giành được sự giúp đỡ vì không có chức năng nào của nó hỗ trợ các số phức tạp. Bạn cần phải kết hợp nó với mô -đun
>>> 3 - 2j == 3 + (-2j)
True
3, xác định các hàm tương ứng cho các số phức.trigonometric, hyperbolic, or logarithmic functions are available in the standard library. Sadly, even if you know everything about the Python
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
60 module, it won’t help because none of its functions support complex numbers. You’ll need to combine it with the
>>> 3 - 2j == 3 + (-2j)
True
3 module, which defines corresponding functions for complex numbers.

Mô-đun

>>> 3 - 2j == 3 + (-2j)
True
3 xác định lại tất cả các hằng số điểm nổi từ
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
60 để chúng ở trong tầm tay của bạn mà không cần phải nhập cả hai mô-đun:

>>>

>>> type(z)

7

Nhiều chức năng toán học tiên tiến như hàm lượng giác, hyperbolic hoặc logarit có sẵn trong thư viện tiêu chuẩn. Đáng buồn thay, ngay cả khi bạn biết mọi thứ về mô -đun Python

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
60, nó đã giành được sự giúp đỡ vì không có chức năng nào của nó hỗ trợ các số phức tạp. Bạn cần phải kết hợp nó với mô -đun
>>> 3 - 2j == 3 + (-2j)
True
3, xác định các hàm tương ứng cho các số phức.

>>>

>>> type(z)

8

Nhiều chức năng toán học tiên tiến như hàm lượng giác, hyperbolic hoặc logarit có sẵn trong thư viện tiêu chuẩn. Đáng buồn thay, ngay cả khi bạn biết mọi thứ về mô -đun Python

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
60, nó đã giành được sự giúp đỡ vì không có chức năng nào của nó hỗ trợ các số phức tạp. Bạn cần phải kết hợp nó với mô -đun
>>> 3 - 2j == 3 + (-2j)
True
3, xác định các hàm tương ứng cho các số phức.

Mô-đun >>> 3 - 2j == 3 + (-2j) True 3 xác định lại tất cả các hằng số điểm nổi từ z = complex(2, -3) print(z) z = complex(1) print(z) z = complex() print(z) z = complex('5-9j') print(z)60 để chúng ở trong tầm tay của bạn mà không cần phải nhập cả hai mô-đun:

Lưu ý rằng

(2-3j)
(1+0j)
0j
(5-9j)
25 là một giá trị đặc biệt không bao giờ bằng bất cứ thứ gì khác, bao gồm cả chính nó! Đó là lý do tại sao bạn lại nhìn thấy một
(2-3j)
(1+0j)
0j
(5-9j)
26 đơn độc ở đầu ra ở trên. Ngoài ra,
>>> 3 - 2j == 3 + (-2j)
True
3 cung cấp hai đối tác phức tạp cho NAN (không phải là một số) và vô cực, với cả hai đều có phần thực bằng không:rectangular coordinates comprising the real and imaginary parts.

Có khoảng một nửa số hàm trong

>>> 3 - 2j == 3 + (-2j)
True
3 như có trong mô -đun
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
60 tiêu chuẩn. Hầu hết trong số chúng bắt chước hành vi ban đầu, nhưng một số ít là duy nhất cho các số phức tạp. Họ sẽ cho phép bạn thực hiện chuyển đổi giữa hai hệ tọa độ mà bạn sẽ khám phá trong phần này.polar coordinates that also let you find it unambiguously with two distances:

  1. Chuyển đổi giữa tọa độ hình chữ nhật và cực is the length of the radius measured from the origin.
  2. Về mặt hình học, bạn có thể nhìn vào một số phức tạp gấp đôi. Một mặt, nó có một điểm có khoảng cách ngang và thẳng đứng so với nguồn gốc xác định duy nhất vị trí của nó. Chúng được gọi là tọa độ hình chữ nhật bao gồm các phần thực và tưởng tượng. is the angle measured between the horizontal axis and the radius.

Mặt khác, bạn có thể mô tả cùng một điểm trong các tọa độ cực cũng cho phép bạn tìm thấy nó rõ ràng với hai khoảng cách:radius, also known as the modulus, corresponds to the complex number’s magnitude, or the vector’s length. The angle is commonly referred to as the phase or argument of a complex number. It’s useful to express the angle in radians rather than degrees when working with trigonometric functions.

Khoảng cách xuyên tâm là chiều dài của bán kính được đo từ gốc.

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Khoảng cách góc là góc đo giữa trục ngang và bán kính.

Bán kính, còn được gọi là mô đun, tương ứng với độ lớn số phức, hoặc chiều dài vectơ. Góc thường được gọi là pha hoặc đối số của một số phức. Nó rất hữu ích để thể hiện góc trong radian thay vì độ khi làm việc với các hàm lượng giác.

>>>

>>> type(z)

9

Nhiều chức năng toán học tiên tiến như hàm lượng giác, hyperbolic hoặc logarit có sẵn trong thư viện tiêu chuẩn. Đáng buồn thay, ngay cả khi bạn biết mọi thứ về mô -đun Python

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
60, nó đã giành được sự giúp đỡ vì không có chức năng nào của nó hỗ trợ các số phức tạp. Bạn cần phải kết hợp nó với mô -đun
>>> 3 - 2j == 3 + (-2j)
True
3, xác định các hàm tương ứng cho các số phức.

>>>

>>> z = 3 + 2

>>> type(z)

0

Góc có thể thu được bằng cách sử dụng lượng giác cơ bản vì phần thực, phần tưởng tượng và độ lớn cùng nhau tạo thành một tam giác vuông:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Bạn có thể sử dụng các hàm lượng giác nghịch đảo, chẳng hạn như arcsine, từ

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
60 hoặc
>>> 3 - 2j == 3 + (-2j)
True
3, nhưng phần sau sẽ tạo ra các giá trị phức tạp với phần tưởng tượng bằng 0:arcsine, either from
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
60 or
>>> 3 - 2j == 3 + (-2j)
True
3, but the latter will produce complex values with the imaginary part equal to zero:

>>>

>>> z = 3 + 2

>>> type(z)

1

Tuy nhiên, có một chi tiết nhỏ để cẩn thận khi sử dụng hàm Arctangent, điều này đã khiến nhiều ngôn ngữ lập trình phát triển một triển khai thay thế gọi là

(2-3j)
(1+0j)
0j
(5-9j)
36. Tính tỷ lệ giữa phần tưởng tượng và phần thực đôi khi có thể tạo ra một điểm kỳ dị do, ví dụ, phân chia theo 0. Hơn nữa, các dấu hiệu riêng lẻ của hai giá trị bị mất trong quá trình, khiến cho không thể nói góc một cách chắc chắn:arctangent function, though, which led many programming languages to develop an alternative implementation called
(2-3j)
(1+0j)
0j
(5-9j)
36. Calculating the ratio between the imaginary and the real part can sometimes produce a singularity due to, for instance, division by zero. Moreover, the individual signs of the two values are lost in the process, making it impossible to tell the angle with certainty:

>>>

>>> z = 3 + 2

>>> type(z)

2

Lưu ý cách

(2-3j)
(1+0j)
0j
(5-9j)
37 không nhận ra hai điểm khác nhau nằm trong các góc phần tư đối diện của hệ tọa độ. Mặt khác,
(2-3j)
(1+0j)
0j
(5-9j)
36 mong đợi hai đối số thay vì một để bảo tồn các dấu hiệu riêng lẻ trước khi chia cho nhau và cũng tránh các vấn đề khác.

Để có được độ thay vì radian, bạn có thể thực hiện chuyển đổi cần thiết bằng cách sử dụng mô -đun

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
60:

>>>

>>> z = 3 + 2

>>> type(z)

3

Đảo ngược quá trình, đó là, chuyển đổi cực sang tọa độ hình chữ nhật trên các chức năng khác. Tuy nhiên, bạn có thể chỉ cần vượt qua cùng một tuple mà bạn có được từ

(2-3j)
(1+0j)
0j
(5-9j)
31 kể từ khi
(2-3j)
(1+0j)
0j
(5-9j)
41 mong đợi hai đối số riêng biệt:

>>>

>>> z = 3 + 2

>>> type(z)

4

Đó là một ý tưởng tốt để giải nén bộ tuple trước tiên khi thực hiện một bài tập và đưa ra các yếu tố đó nhiều tên mô tả hơn. Bây giờ bạn có thể gọi

(2-3j)
(1+0j)
0j
(5-9j)
41 chính xác:

>>>

>>> z = 3 + 2

>>> type(z)

5

Bạn có thể gặp lỗi làm tròn trên đường đi trong khi Python thực hiện các tính toán. Đằng sau hậu trường, nó gọi các hàm lượng giác để truy xuất các phần thực và tưởng tượng:

>>>

>>> z = 3 + 2

>>> type(z)

6

Một lần nữa, không quan trọng cho dù bạn sử dụng

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
60 hay
>>> 3 - 2j == 3 + (-2j)
True
3 trong trường hợp này vì kết quả sẽ giống hệt nhau.

Đại diện cho các số phức tạp khác nhau

Bất kể hệ tọa độ, bạn có thể diễn đạt cùng một số phức trong một vài hình thức tương đương về mặt toán học:

  • Đại số (Tiêu chuẩn)
  • Hình học
  • Lượng giác
  • số mũ

Danh sách này không đầy đủ vì có nhiều đại diện hơn, chẳng hạn như biểu diễn ma trận của các số phức.

Có sự lựa chọn cho phép bạn chọn một người thuận tiện nhất để giải quyết một vấn đề nhất định. Ví dụ, bạn sẽ cần hình thức theo cấp số nhân để tính toán biến đổi Fourier rời rạc trong một phần sắp tới. Sử dụng hình thức này cũng phù hợp để nhân và chia số phức.

Dưới đây, một danh sách nhanh chóng của các biểu mẫu số phức và tọa độ của chúng:

Hình thứcHình hộp chữ nhậtCực
Đại sốz = x + y
>>> 3 - 2j == 3 + (-2j)
True
4
-
Hình họcz = (x, y)z = (r, φ)
Lượng giácz = | z | (cos (x/| z |) + ________ 94Sin (y/| z |)))z = r (cos (φ) + ________ 94Sin (φ)))
số mũz = | z | e ________ 248z = r (e ________ 94φ)

Hình thức đại số có nguồn gốc từ Python khi bạn chỉ định các số phức tạp bằng cách sử dụng chữ của chúng. Bạn cũng có thể xem chúng là điểm trên một mặt phẳng Euclide trong các hệ tọa độ của Cartesian hoặc Polar. Mặc dù có các biểu diễn riêng cho dạng lượng giác hoặc theo cấp số nhân trong Python, bạn có thể xác minh xem các nguyên tắc toán học có giữ được không.

Ví dụ, việc cắm vào công thức Euler, thành dạng lượng giác sẽ biến nó thành theo cấp số nhân. Bạn có thể gọi mô -đun

>>> 3 - 2j == 3 + (-2j)
True
3

>>>

>>> z = 3 + 2

>>> type(z)

7

Tất cả các hình thức thực sự là những cách khác nhau để mã hóa cùng một số. Tuy nhiên, bạn có thể so sánh chúng trực tiếp vì các lỗi làm tròn có thể xảy ra trong lúc này. Sử dụng

(2-3j)
(1+0j)
0j
(5-9j)
53 để so sánh an toàn hoặc
(2-3j)
(1+0j)
0j
(5-9j)
54 Các số dưới dạng chuỗi một cách thích hợp. Bạn sẽ tìm ra cách định dạng các chuỗi như vậy trong phần sắp tới.

Giải thích tại sao các hình thức khác nhau của một số phức là tương đương đòi hỏi tính toán và vượt xa phạm vi của hướng dẫn này. Tuy nhiên, nếu bạn quan tâm đến toán học, thì bạn sẽ tìm thấy các kết nối giữa các lĩnh vực toán học khác nhau được thể hiện bởi các số phức tạp là hấp dẫn.

Phân tích một số phức trong Python

Bạn đã học được một loạt về các con số phức tạp Python và đã thấy các ví dụ sơ bộ. Tuy nhiên, trước khi di chuyển xa hơn, nó có giá trị để bao gồm một số chủ đề cuối cùng. Trong phần này, bạn sẽ xem xét so sánh các số phức tạp, định dạng các chuỗi có chứa chúng và hơn thế nữa.

Kiểm tra bình đẳng của các số phức tạp

Về mặt toán học, hai số phức là bằng nhau khi chúng có các giá trị giống hệt nhau bất kể hệ tọa độ được thông qua. Tuy nhiên, việc chuyển đổi giữa các tọa độ phân cực và hình chữ nhật thường đưa ra các lỗi làm tròn trong Python, vì vậy bạn cần coi chừng sự khác biệt nhỏ khi so sánh chúng.

Ví dụ, khi bạn xem xét một điểm trên một vòng tròn đơn vị có bán kính bằng một và được nghiêng ở 60 °, thì lượng giác hoạt động độc đáo, làm cho việc chuyển đổi bằng bút và giấy đơn giản:

>>>

>>> z = 3 + 2

>>> type(z)

8

Mặc dù bạn biết rằng

(2-3j)
(1+0j)
0j
(5-9j)
55 và
(2-3j)
(1+0j)
0j
(5-9j)
56 là cùng một điểm, Python có thể xác định rằng vì các lỗi làm tròn. May mắn thay, tài liệu PEP 485 được xác định các chức năng cho sự bình đẳng gần đúng, có sẵn trong các mô -đun
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
60 và
>>> 3 - 2j == 3 + (-2j)
True
3:

>>>

Mặc dù bạn biết rằng
(2-3j)
(1+0j)
0j
(5-9j)
55 và
(2-3j)
(1+0j)
0j
(5-9j)
56 là cùng một điểm, Python có thể xác định rằng vì các lỗi làm tròn. May mắn thay, tài liệu PEP 485 được xác định các chức năng cho sự bình đẳng gần đúng, có sẵn trong các mô -đun
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
60 và
>>> 3 - 2j == 3 + (-2j)
True
3:

>>> z = 3 + 2

>>> type(z)

9

Hãy nhớ luôn luôn sử dụng chúng khi so sánh các số phức tạp! Nếu dung sai mặc định không đủ tốt cho các tính toán của bạn, bạn có thể thay đổi nó bằng cách chỉ định các đối số bổ sung.

Đặt hàng số phức

>>>

>>> z = 3.14 + 2.71j
>>> type(z)

0

Mặc dù bạn biết rằng

(2-3j)
(1+0j)
0j
(5-9j)
55 và
(2-3j)
(1+0j)
0j
(5-9j)
56 là cùng một điểm, Python có thể xác định rằng vì các lỗi làm tròn. May mắn thay, tài liệu PEP 485 được xác định các chức năng cho sự bình đẳng gần đúng, có sẵn trong các mô -đun
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
60 và
>>> 3 - 2j == 3 + (-2j)
True
3:

>>>

>>> z = 3.14 + 2.71j
>>> type(z)

1

Mặc dù bạn biết rằng

(2-3j)
(1+0j)
0j
(5-9j)
55 và
(2-3j)
(1+0j)
0j
(5-9j)
56 là cùng một điểm, Python có thể xác định rằng vì các lỗi làm tròn. May mắn thay, tài liệu PEP 485 được xác định các chức năng cho sự bình đẳng gần đúng, có sẵn trong các mô -đun
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
60 và
>>> 3 - 2j == 3 + (-2j)
True
3:

>>>

>>> z = 3.14 + 2.71j
>>> type(z)

2

>>> z = 3 + 2

>>> type(z)

9key function, such as
z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
65:

>>>

>>> z = 3.14 + 2.71j
>>> type(z)

3

Hãy nhớ luôn luôn sử dụng chúng khi so sánh các số phức tạp! Nếu dung sai mặc định không đủ tốt cho các tính toán của bạn, bạn có thể thay đổi nó bằng cách chỉ định các đối số bổ sung.

Đặt hàng số phức

Nếu bạn quen thuộc với Tuples, thì bạn sẽ biết rằng Python có thể sắp xếp chúng:

Theo mặc định, các bộ dữ liệu riêng lẻ được so sánh bên trái:

>>>

>>> z = 3.14 + 2.71j
>>> type(z)

4

Trong trường hợp đầu tiên, số

(2-3j)
(1+0j)
0j
(5-9j)
59 lớn hơn
(2-3j)
(1+0j)
0j
(5-9j)
60, do đó, các tên hành tinh không được xem xét. Họ có thể giúp giải quyết một cà vạt, mặc dù. Tuy nhiên, đó không phải là trường hợp với các số phức tạp vì họ không xác định mối quan hệ đặt hàng tự nhiên. Ví dụ: bạn sẽ gặp lỗi nếu bạn cố gắng so sánh hai số phức tạp:

>>>

>>> z = 3.14 + 2.71j
>>> type(z)

5

Kích thước tưởng tượng có nên có trọng lượng nhiều hơn so với thực tế? Nên so sánh cường độ của chúng? Nó tùy thuộc vào bạn, và câu trả lời sẽ khác nhau. Vì bạn có thể so sánh trực tiếp các số phức, bạn cần nói với Python cách sắp xếp chúng bằng cách chỉ định chức năng khóa tùy chỉnh, chẳng hạn như

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
65:

>>>

>>> z = 3.14 + 2.71j
>>> type(z)

6

Điều này sẽ sắp xếp các số phức theo độ lớn của chúng theo thứ tự giảm dần.positional or keyword arguments to it:

>>>

>>> z = 3.14 + 2.71j
>>> type(z)

7

Định dạng các số phức là chuỗi

>>>

>>> z = 3.14 + 2.71j
>>> type(z)

8

Có bất kỳ mã định dạng nào cụ thể cho các số phức tạp, nhưng bạn có thể định dạng các phần thực và tưởng tượng của chúng một cách riêng biệt bằng cách sử dụng các mã tiêu chuẩn cho các số điểm nổi. Dưới đây, bạn sẽ tìm thấy một vài kỹ thuật thể hiện điều này. Một số trong số chúng thực sự sẽ áp dụng định dạng định dạng của bạn cho cả các phần thực và tưởng tượng trong một lần.

Hãy để Lừa lấy số phức tạp sau làm ví dụ và định dạng nó với hai vị trí thập phân trên cả hai phần:

Một cách nhanh chóng để thực hiện điều này là bằng cách gọi

(2-3j)
(1+0j)
0j
(5-9j)
54 với định dạng định dạng số hoặc bằng cách tạo một chuỗi F được định dạng phù hợp:bound vectors. You might calculate their dot product and do some trigonometry. Alternatively, you can take advantage of complex numbers.

Ví dụ, nếu bạn muốn kiểm soát nhiều hơn để thêm phần đệm xung quanh toán tử cộng, thì chuỗi F sẽ là một lựa chọn tốt hơn:

>>> z = 3.14 + 2.71j
>>> type(z)

9

Bạn cũng có thể gọi

(2-3j)
(1+0j)
0j
(5-9j)
63 trên một đối tượng chuỗi và chuyển các đối số từ khóa hoặc vị trí cho nó:

Các đối số vị trí cung cấp một chuỗi các giá trị, trong khi các đối số từ khóa cho phép bạn tham khảo chúng bằng tên. Tương tự, bạn có thể sử dụng toán tử modulo chuỗi (

(2-3j)
(1+0j)
0j
(5-9j)
64) với một tuple hoặc từ điển:

>>> 3 + 2j == 2j + 3
True
0

Tuy nhiên, điều này sử dụng một cú pháp giữ chỗ khác nhau và hơi lỗi thời.delegation when you call the global

>>> 3 + 2j == 2j + 3
True
5 on a vector instance:

>>>

>>> 3 + 2j == 2j + 3
True
1

Tạo loại dữ liệu phức tạp của riêng bạn

>>>

>>> 3 + 2j == 2j + 3
True
2

Mô hình dữ liệu Python xác định một tập hợp các phương thức đặc biệt mà bạn có thể thực hiện để làm cho các lớp của bạn tương thích với các loại tích hợp nhất định. Giả sử bạn đã làm việc với các điểm và vectơ và muốn có được góc giữa hai vectơ ràng buộc. Bạn có thể tính toán sản phẩm DOT của họ và thực hiện một số lượng giác. Ngoài ra, bạn có thể tận dụng các số phức tạp.

Hãy để xác định các lớp học của bạn trước:

Tính toán biến đổi Fourier rời rạc với các số phức

Mặc dù bạn có thể sử dụng các số thực để tính toán các hệ số sin và cosine của một hàm định kỳ tần số với biến đổi Fourier, nhưng nó thường thuận tiện hơn để đối phó với chỉ một hệ số phức tạp trên mỗi tần số. Biến đổi Fourier rời rạc trong miền phức tạp được đưa ra bởi công thức sau:discrete Fourier transform in the complex domain is given by the following formula:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Đối với mỗi Tần số Bin K, nó đo được mối tương quan của tín hiệu và một sóng hình sin cụ thể được biểu thị bằng một số phức ở dạng hàm mũ. .frequency bin k, it measures the correlation of the signal and a particular sine wave expressed as a complex number in the exponential form. (Thank you, Leonhard Euler!) The angular frequency of the wave can be calculated by multiplying the round angle, which is 2π radians, by k over the number of discrete samples:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?

Mã hóa điều này trong Python trông khá gọn gàng khi bạn tận dụng kiểu dữ liệu

z = complex(2, -3)
print(z)

z = complex(1)
print(z)

z = complex()
print(z)

z = complex('5-9j')
print(z)
16:

>>> 3 + 2j == 2j + 3
True
3

Hàm này là một phiên mã theo nghĩa đen của các công thức ở trên. Bây giờ bạn có thể chạy phân tích tần số trên một âm thanh mà bạn tải từ tệp âm thanh bằng mô -đun Python, ____275 hoặc bạn tổng hợp từ đầu. Một trong những máy tính xách tay Jupyter đi kèm với hướng dẫn này cho phép bạn chơi với tổng hợp và phân tích âm thanh một cách tương tác.

Để vẽ phổ tần số với matplotlib, bạn phải biết tần số lấy mẫu, xác định độ phân giải thùng tần số cũng như giới hạn Nyquist:frequency spectrum with Matplotlib, you must know the sampling frequency, which determines your frequency bin resolution as well as the Nyquist limit:

>>> 3 + 2j == 2j + 3
True
4

Số lượng thùng tần số trong phổ bằng một nửa các mẫu, trong khi tần số Nyquist giới hạn tần số cao nhất bạn có thể đo. Biến đổi trả về một số phức có cường độ tương ứng với biên độ của sóng hình sin ở tần số đã cho, trong khi góc của nó là pha.amplitude of a sine wave at the given frequency, whereas its angle is the phase.

Ở đây, một biểu đồ tần số mẫu của sóng âm bao gồm ba âm 440 Hz, 1,5 kHz và 5 kHz, có biên độ bằng nhau:

Hướng dẫn what is complex in python used for? - phức tạp trong python được sử dụng để làm gì?
Biểu đồ phổ tần số

Lưu ý đây là một ví dụ hoàn toàn học thuật vì tính toán biến đổi Fourier rời rạc với các lần lặp lồng nhau có độ phức tạp thời gian O (N2), khiến nó không thể sử dụng được trong thực tế. Đối với các ứng dụng thực tế, bạn muốn sử dụng thuật toán Fast Fourier Transform (FFT) được triển khai tốt nhất trong thư viện C, chẳng hạn như FFT trong SCIPY.fast Fourier transform (FFT) algorithm best implemented in a C library, such as the FFT in SciPy.

Sự kết luận

Sự dễ dàng của việc sử dụng các số phức tạp trong Python làm cho chúng trở thành một công cụ thực tế và thú vị đáng ngạc nhiên. Bạn đã thấy các vectơ hai chiều được triển khai thực tế miễn phí và bạn đã có thể phân tích tần số âm thanh nhờ chúng. Các số phức cho phép bạn thể hiện một cách tao nhã các công thức toán học trong mã mà không có nhiều cú pháp tự nhiên cản trở.vectors implemented practically for free, and you were able to analyze sound frequencies thanks to them. Complex numbers let you elegantly express mathematical formulas in code without much boilerplate syntax standing in the way.

Trong hướng dẫn này, bạn đã học được cách:

  • Xác định các số phức tạp với nghĩa đen trong Pythonliterals in Python
  • Biểu thị các số phức trong tọa độ hình chữ nhật và cựcrectangular and polar coordinates
  • Sử dụng các số phức tạp trong các biểu thức số họcarithmetic expressions
  • Tận dụng mô-đun
    >>> 3 - 2j == 3 + (-2j)
    True
    
    3 tích hợp
    >>> 3 - 2j == 3 + (-2j)
    True
    
    3 module
  • Dịch các công thức toán học trực tiếp sang mã Pythonmathematical formulas directly to Python code

Kinh nghiệm của bạn là gì với những con số phức tạp Python cho đến nay? Bạn đã bao giờ bị họ đe dọa? Những vấn đề thú vị khác mà bạn nghĩ rằng họ sẽ cho phép bạn giải quyết?

Bạn có thể nhấp vào liên kết bên dưới để lấy mã nguồn đầy đủ cho hướng dẫn này:

Những con số phức tạp được sử dụng để làm gì?

Số lượng phức tạp (tổng của các số thực và số tưởng tượng) xảy ra khá tự nhiên trong nghiên cứu vật lý lượng tử.Chúng hữu ích cho việc mô hình các chuyển động định kỳ (như sóng nước hoặc sóng ánh sáng) cũng như các dòng điện xen kẽ.modelling periodic motions (such as water or light waves) as well as alternating currents.

Những con số phức tạp có nghĩa là gì trong Python?

Một số phức được tạo từ các số thực.Số phức Python có thể được tạo bằng cách sử dụng câu lệnh gán trực tiếp hoặc bằng cách sử dụng hàm phức tạp ().Các số phức tạp hầu hết được sử dụng ở nơi chúng tôi đang sử dụng hai số thực.created from real numbers. Python complex number can be created either using direct assignment statement or by using complex () function. Complex numbers which are mostly used where we are using two real numbers.