خانه / آموزش‌ها / آموزش جامع اعداد مختلط در پایتون (Complex Numbers)

آموزش جامع اعداد مختلط در پایتون (Complex Numbers)

🐍 HomeOfPython
|
📅 1404/10/18

سطح مقدماتی (Beginner Level)

اعداد مختلط (Complex Numbers) یکی از انواع داده‌ای داخلی و قدرتمند در پایتون هستند که کاربردهای فراوانی در مهندسی برق، فیزیک کوانتوم و ریاضیات پیشرفته دارند. در ریاضیات، عدد مختلط به صورت $a + bi$ نمایش داده می‌شود که $i$ ریشه دوم عدد منفی یک ($\sqrt{-1}$) است.

نکته مهم: در پایتون برخلاف ریاضیات استاندارد، برای نمایش قسمت موهومی از حرف j یا J به جای i استفاده می‌شود.

۱. ساخت اعداد مختلط

برای تعریف یک عدد مختلط در پایتون دو روش اصلی وجود دارد: استفاده از لیترال‌ها (نوشتن مستقیم) و استفاده از تابع سازنده complex().

مثال ۱: تعریف مستقیم (Literal)

ساده‌ترین روش، نوشتن عدد به فرم a + bj است.

Python

مثال ۲: استفاده از تابع complex()

این تابع دو ورودی می‌گیرد: complex(real, imag). اگر آرگومان دوم داده نشود، صفر در نظر گرفته می‌شود.

Python

مثال ۳: استخراج قسمت حقیقی و موهومی

هر شیء عدد مختلط دارای دو اتریبیوت (Attribute) به نام‌های .real و .imag است که مقادیر را به صورت float برمی‌گردانند.

Python

۲. اعمال ریاضی پایه

پایتون از عملگرهای استاندارد ریاضی (+، -، *، /) و توان‌رسانی (**) برای اعداد مختلط پشتیبانی می‌کند.

مثال ۱: جمع و تفریق

Python

مثال ۲: ضرب و توان‌رسانی

Python

مثال ۳: مزدوج عدد مختلط (Conjugate)

متد .conjugate() علامت قسمت موهومی را قرینه می‌کند ($a + bj \rightarrow a - bj$).

Python

سطح پیشرفته (Professional Level)

در سطح حرفه‌ای، کار با اعداد مختلط فراتر از جمع و تفریق ساده است. ماژول استاندارد math پایتون برای اعداد حقیقی طراحی شده است و اگر سعی کنید جذر عدد منفی را با math.sqrt(-1) بگیرید، با خطای ValueError مواجه می‌شوید. برای حل این مشکل و انجام محاسبات پیشرفته، باید از ماژول cmath (Complex Math) استفاده کنیم.

۱. ماژول cmath و توابع مثلثاتی

ماژول cmath نسخه توسعه‌یافته math است که خروجی‌های مختلط تولید می‌کند.

مثال ۱: جذر اعداد منفی

Python

مثال ۲: توابع نمایی و لگاریتمی

Python

۲. مختصات قطبی (Polar Coordinates)

اعداد مختلط را می‌توان به صورت قطبی $(r, \theta)$ نمایش داد که $r$ اندازه (Magnitude) و $\theta$ فاز (Phase) است. فرمول اویلر: $z = r(cos \theta + j \sin \theta) = r e^{j\theta}$

مثال ۱: تبدیل کارتزین به قطبی

تابع cmath.polar() یک تاپل شامل (r, phi) برمی‌گرداند.

Python

مثال ۲: تبدیل قطبی به کارتزین (Rectangular)

تابع cmath.rect(r, phi) عکس عمل فوق را انجام می‌دهد.

Python

۳. نکات فنی و محدودیت‌ها

مقایسه اعداد مختلط

در پایتون، اعداد مختلط قابل مرتب‌سازی نیستند. یعنی عملگرهای <, >, <=, >= روی آن‌ها کار نمی‌کنند و باعث خطای TypeError می‌شوند. تنها می‌توان برابری (== یا !=) را بررسی کرد.

python
# Static code example (This causes error if run)
z1 = 3 + 4j
z2 = 5 + 1j

# if z1 > z2:  <-- This will raise TypeError: '>' not supported between instances of 'complex' and 'complex'

برای مقایسه، معمولاً از اندازه (Magnitude) آن‌ها استفاده می‌شود:

Python

دقت ممیز شناور (Floating Point Precision)

از آنجا که .real و .imag از نوع float هستند، همان مسائل مربوط به دقت ممیز شناور در اینجا نیز صادق است. برای مقایسه دقیق برابری، بهتر است از تابع cmath.isclose() استفاده کنید.

Python

نمودار اعداد مختلط در صفحه