پایتون، انواع پیچیده برای کار با اعداد مختلط (مقادیر مطلق، انحراف، تبدیل قطبی و غیره)

کسب و کار

پایتون یک نوع استاندارد برای مدیریت اعداد مختلط دارد، نوع COMPLEX. اگر فقط می خواهید محاسبات ساده انجام دهید، نیازی به وارد کردن ماژول ندارید، اما اگر cmath استاندارد کتابخانه را وارد کنید، می توانید از توابع ریاضی (نمایی، لگاریتمی، مثلثاتی و غیره) مربوط به اعداد مختلط نیز استفاده کنید.

مطالب زیر با نمونه کد در اینجا توضیح داده شده است.

  • ایجاد متغیرهای پیچیده
  • دریافت قطعات واقعی و تخیلی:real,imagصفت
  • اعداد مختلط مزدوج را بدست آورید:conjugate()روش
  • دریافت مقدار مطلق (قدر):abs()تابع (به عنوان مثال ریاضی، برنامه نویسی، برنامه نویسی)
  • دریافت انحراف (فاز):math,cmathمدول
  • تبدیل مختصات قطبی (نمایش فرم قطبی):math,cmathمدول
  • محاسبه اعداد مختلط (مربع، توان، جذر)

ایجاد متغیرهای پیچیده

واحد فرضی را با j نشان دهید و موارد زیر را بنویسید، توجه داشته باشید که i نیست.

c = 3 + 4j

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

اگر قسمت خیالی 1 باشد، حذف آن منجر به NameError می شود. اگر ابتدا متغیری به نام j تعریف شود، آن متغیر در نظر گرفته می شود.

1j
باید به صراحت اینگونه بیان شود.

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

c = 3 + 1j

print(c)
# (3+1j)

اگر قسمت واقعی 0 باشد، می توان آن را حذف کرد.

c = 3j

print(c)
# 3j

اگر می خواهید مقداری با قسمت خیالی 0 به عنوان یک نوع پیچیده پیچیده تعریف کنید، 0 را صریحا بنویسید. همانطور که در زیر توضیح داده شد، عملیات را می توان بین نوع مختلط و نوع عدد صحیح یا نوع ممیز شناور انجام داد.

c = 3 + 0j

print(c)
# (3+0j)

قطعات واقعی و خیالی را می توان به عنوان نوع شناور ممیز شناور مشخص کرد. نماد نمایی نیز قابل قبول است.

c = 1.2e3 + 3j

print(c)
# (1200+3j)

همچنین می تواند توسط سازنده ای از نوع “کمپلکس” تولید شود، مانند “کمپلکس (قسمت واقعی، قسمت خیالی)”.

c = complex(3, 4)

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

قسمت های واقعی و خیالی اعداد مختلط را بدست آورید:real,imagصفت

قسمت های واقعی و خیالی یک نوع پیچیده پیچیده را می توان به ترتیب با ویژگی های واقعی و تصویری بدست آورد. هر دو نوع شناور ممیز شناور هستند.

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'>

فقط خواندنی است و قابل تغییر نیست.

# c.real = 5.5
# AttributeError: readonly attribute

اعداد مختلط مزدوج را بدست آورید:conjugate()

برای بدست آوردن اعداد مختلط مزدوج، از متد مزدوج () استفاده کنید.

c = 3 + 4j

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

قدر مطلق (قدر) یک عدد مختلط را بدست آورید:abs()

برای به دست آوردن مقدار مطلق (قدر) یک عدد مختلط، از تابع داخلی ()abs استفاده کنید.

c = 3 + 4j

print(abs(c))
# 5.0

c = 1 + 1j

print(abs(c))
# 1.4142135623730951

انحراف (فاز) یک عدد مختلط را بدست آورید:math,cmathمدول

برای به دست آوردن انحراف (فاز) یک عدد مختلط، از ماژول ریاضی یا cmath استفاده کنید.

ماژول cmath یک ماژول تابع ریاضی برای اعداد مختلط است.

می توان آن را با تابع مماس معکوس ()math.atan2 همانطور که تعریف شده محاسبه کرد، یا از cmath.phase() استفاده کرد که انحراف (فاز) را برمی گرداند.

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

در هر دو مورد، واحد زاویه ای که می توان به دست آورد رادیان است. برای تبدیل به درجه، از math.degrees() استفاده کنید.

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

تبدیل مختصات قطبی اعداد مختلط (نمایش رسمی قطبی):math,cmathمدول

همانطور که در بالا ذکر شد، قدر مطلق (قدر) و انحراف (فاز) یک عدد مختلط را می توان به دست آورد، اما با استفاده از cmath.polar()، می توان آنها را با هم به عنوان یک تاپل (مقدار مطلق، انحراف) به دست آورد.

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

تبدیل مختصات قطبی به مختصات دکارتی با استفاده از cmath.rect() انجام می شود. cmath.rect (مقدار مطلق، انحراف) و آرگومان های مشابه را می توان برای به دست آوردن مقادیری از نوع پیچیده پیچیده معادل استفاده کرد.

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)

بخش های واقعی و خیالی معادل نتایج محاسبه شده توسط کسینوس math.cos() و math.sin() از مقادیر مطلق و زوایای انحراف هستند.

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

محاسبه اعداد مختلط (مربع، توان، جذر)

چهار عملیات حسابی و محاسبات توان را می توان با استفاده از عملگرهای معمولی محاسباتی انجام داد.

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)

ریشه مربع را می توان با **0.5 محاسبه کرد، اما خطا را معرفی می کند. برای محاسبه مقدار دقیق می توان از cmath.sqrt() استفاده کرد.

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

همچنین می تواند عملیات حسابی را با انواع پیچیده، انواع int و انواع شناور انجام دهد.

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

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