Python, các kiểu phức hợp để làm việc với số phức (giá trị tuyệt đối, độ nghiêng, phép biến đổi cực, v.v.)

Kinh doanh

Python có một kiểu tiêu chuẩn để xử lý số phức, kiểu COMPLEX. Nếu bạn chỉ muốn thực hiện các phép tính đơn giản, bạn không cần nhập bất kỳ mô-đun nào, nhưng nếu bạn nhập cmath thư viện chuẩn, bạn cũng có thể sử dụng các hàm toán học (hàm mũ, logarit, lượng giác, v.v.) tương ứng với số phức.

Các nội dung sau đây được giải thích ở đây với mã mẫu.

  • Tạo các biến phức tạp
  • Nhận các phần thực và ảo:real,imagthuộc tính
  • Nhận số phức liên hợp:conjugate()phương pháp
  • Nhận giá trị tuyệt đối (độ lớn):abs()hàm (ví dụ: toán học, lập trình, lập trình)
  • Có được độ nghiêng (pha):math,cmathmô-đun
  • Phép biến đổi tọa độ cực (biểu diễn dạng cực):math,cmathmô-đun
  • Tính toán các số phức (vuông góc, lũy thừa, căn bậc hai)

Tạo các biến phức tạp

Kí hiệu đơn vị ảo bằng j và viết như sau, lưu ý rằng nó không phải là i.

c = 3 + 4j

print(c)
print(type(c))
# (3+4j)
# <class 'complex'>

Nếu phần ảo là 1, việc bỏ qua phần đó sẽ dẫn đến Lỗi tên. Nếu một biến có tên j được xác định trước, nó được coi là biến đó.

1j
Nó nên được nêu rõ ràng theo cách này.

# c = 3 + j
# NameError: name 'j' is not defined

c = 3 + 1j

print(c)
# (3+1j)

Nếu phần thực là 0, nó có thể được bỏ qua.

c = 3j

print(c)
# 3j

Nếu bạn muốn xác định một giá trị có phần ảo của 0 là một kiểu phức phức hợp, hãy viết 0 một cách rõ ràng. Như mô tả bên dưới, các phép toán có thể được thực hiện giữa kiểu phức và kiểu số nguyên hoặc kiểu dấu phẩy động.

c = 3 + 0j

print(c)
# (3+0j)

Các phần thực và ảo có thể được chỉ định là kiểu dấu phẩy động. Ký hiệu theo cấp số nhân cũng được chấp nhận.

c = 1.2e3 + 3j

print(c)
# (1200+3j)

Nó cũng có thể được tạo bởi một hàm tạo kiểu “phức hợp”, như trong “phức hợp (phần thực, phần ảo)”.

c = complex(3, 4)

print(c)
print(type(c))
# (3+4j)
# <class 'complex'>

Nhận các phần thực và ảo của số phức:real,imagthuộc tính

Phần thực và phần ảo của một kiểu phức hợp phức tạp có thể nhận được tương ứng với các thuộc tính thực và hình ảnh. Cả hai đều là loại dấu phẩy động.

c = 3 + 4j

print(c.real)
print(type(c.real))
# 3.0
# <class 'float'>

print(c.imag)
print(type(c.imag))
# 4.0
# <class 'float'>

Nó chỉ được đọc và không thể thay đổi.

# c.real = 5.5
# AttributeError: readonly attribute

Nhận số phức liên hợp:conjugate()

Để thu được số phức liên hợp, hãy sử dụng phương thức liên hợp ().

c = 3 + 4j

print(c.conjugate())
# (3-4j)

Nhận giá trị tuyệt đối (độ lớn) của một số phức:abs()

Để nhận giá trị tuyệt đối (độ lớn) của một số phức, hãy sử dụng hàm abs () tích hợp sẵn.

c = 3 + 4j

print(abs(c))
# 5.0

c = 1 + 1j

print(abs(c))
# 1.4142135623730951

Nhận được số thập phân (pha) của một số phức:math,cmathmô-đun

Để có được độ nghiêng (pha) của một số phức, hãy sử dụng toán học hoặc mô-đun cmath.

Mô-đun cmath là một mô-đun hàm toán học cho các số phức.

Nó có thể được tính bằng hàm tiếp tuyến nghịch đảo math.atan2 () như được định nghĩa hoặc sử dụng cmath.phase (), trả về độ nghiêng (pha).

import cmath
import math

c = 1 + 1j

print(math.atan2(c.imag, c.real))
# 0.7853981633974483

print(cmath.phase(c))
# 0.7853981633974483

print(cmath.phase(c) == math.atan2(c.imag, c.real))
# True

Trong cả hai trường hợp, đơn vị góc có thể nhận được là radian. Để chuyển đổi sang độ, hãy sử dụng math.degrees ().

print(math.degrees(cmath.phase(c)))
# 45.0

Phép biến đổi tọa độ cực của số phức (biểu diễn hình thức cực):math,cmathmô-đun

Như đã đề cập ở trên, có thể thu được giá trị tuyệt đối (độ lớn) và độ nghiêng (pha) của một số phức, nhưng bằng cách sử dụng cmath.polar (), chúng có thể thu được cùng nhau dưới dạng một bộ (giá trị tuyệt đối, độ nghiêng).

c = 1 + 1j

print(cmath.polar(c))
print(type(cmath.polar(c)))
# (1.4142135623730951, 0.7853981633974483)
# <class 'tuple'>

print(cmath.polar(c)[0] == abs(c))
# True

print(cmath.polar(c)[1] == cmath.phase(c))
# True

Việc chuyển đổi từ tọa độ cực sang tọa độ Descartes được thực hiện bằng cách sử dụng cmath.rect (). cmath.rect (giá trị tuyệt đối, độ lệch) và các đối số tương tự có thể được sử dụng để lấy các giá trị của kiểu phức phức tương đương.

print(cmath.rect(1, 1))
# (0.5403023058681398+0.8414709848078965j)

print(cmath.rect(1, 0))
# (1+0j)

print(cmath.rect(cmath.polar(c)[0], cmath.polar(c)[1]))
# (1.0000000000000002+1j)

Phần thực và phần ảo tương đương với kết quả được tính toán bởi cosine math.cos () và sin math.sin () từ các giá trị tuyệt đối và góc nghiêng.

r = 2
ph = math.pi

print(cmath.rect(r, ph).real == r * math.cos(ph))
# True

print(cmath.rect(r, ph).imag == r * math.sin(ph))
# True

Tính toán các số phức (vuông góc, lũy thừa, căn bậc hai)

Bốn phép tính số học và phép tính lũy thừa có thể được thực hiện bằng cách sử dụng các toán tử số học thông thường.

c1 = 3 + 4j
c2 = 2 - 1j

print(c1 + c2)
# (5+3j)

print(c1 - c2)
# (1+5j)

print(c1 * c2)
# (10+5j)

print(c1 / c2)
# (0.4+2.2j)

print(c1 ** 3)
# (-117+44j)

Căn bậc hai có thể được tính với ** 0,5, nhưng nó gây ra lỗi. cmath.sqrt () có thể được sử dụng để tính toán giá trị chính xác.

print((-3 + 4j) ** 0.5)
# (1.0000000000000002+2j)

print((-1) ** 0.5)
# (6.123233995736766e-17+1j)

print(cmath.sqrt(-3 + 4j))
# (1+2j)

print(cmath.sqrt(-1))
# 1j

Nó cũng có thể thực hiện các phép toán số học với các kiểu phức tạp, kiểu int và kiểu float.

print(c1 + 3)
# (6+4j)

print(c1 * 0.5)
# (1.5+2j)
Copied title and URL