سطح مقدماتی (Beginner Level)
اعداد مختلط (Complex Numbers) یکی از انواع دادهای داخلی و قدرتمند در پایتون هستند که کاربردهای فراوانی در مهندسی برق، فیزیک کوانتوم و ریاضیات پیشرفته دارند. در ریاضیات، عدد مختلط به صورت $a + bi$ نمایش داده میشود که $i$ ریشه دوم عدد منفی یک ($\sqrt{-1}$) است.
نکته مهم: در پایتون برخلاف ریاضیات استاندارد، برای نمایش قسمت موهومی از حرف j یا J به جای i استفاده میشود.
۱. ساخت اعداد مختلط
برای تعریف یک عدد مختلط در پایتون دو روش اصلی وجود دارد: استفاده از لیترالها (نوشتن مستقیم) و استفاده از تابع سازنده complex().
مثال ۱: تعریف مستقیم (Literal)
سادهترین روش، نوشتن عدد به فرم a + bj است.
مثال ۲: استفاده از تابع complex()
این تابع دو ورودی میگیرد: complex(real, imag). اگر آرگومان دوم داده نشود، صفر در نظر گرفته میشود.
مثال ۳: استخراج قسمت حقیقی و موهومی
هر شیء عدد مختلط دارای دو اتریبیوت (Attribute) به نامهای .real و .imag است که مقادیر را به صورت float برمیگردانند.
۲. اعمال ریاضی پایه
پایتون از عملگرهای استاندارد ریاضی (+، -، *، /) و توانرسانی (**) برای اعداد مختلط پشتیبانی میکند.
مثال ۱: جمع و تفریق
مثال ۲: ضرب و توانرسانی
مثال ۳: مزدوج عدد مختلط (Conjugate)
متد .conjugate() علامت قسمت موهومی را قرینه میکند ($a + bj \rightarrow a - bj$).
سطح پیشرفته (Professional Level)
در سطح حرفهای، کار با اعداد مختلط فراتر از جمع و تفریق ساده است. ماژول استاندارد math پایتون برای اعداد حقیقی طراحی شده است و اگر سعی کنید جذر عدد منفی را با math.sqrt(-1) بگیرید، با خطای ValueError مواجه میشوید. برای حل این مشکل و انجام محاسبات پیشرفته، باید از ماژول cmath (Complex Math) استفاده کنیم.
۱. ماژول cmath و توابع مثلثاتی
ماژول cmath نسخه توسعهیافته math است که خروجیهای مختلط تولید میکند.
مثال ۱: جذر اعداد منفی
مثال ۲: توابع نمایی و لگاریتمی
۲. مختصات قطبی (Polar Coordinates)
اعداد مختلط را میتوان به صورت قطبی $(r, \theta)$ نمایش داد که $r$ اندازه (Magnitude) و $\theta$ فاز (Phase) است. فرمول اویلر: $z = r(cos \theta + j \sin \theta) = r e^{j\theta}$
مثال ۱: تبدیل کارتزین به قطبی
تابع cmath.polar() یک تاپل شامل (r, phi) برمیگرداند.
مثال ۲: تبدیل قطبی به کارتزین (Rectangular)
تابع cmath.rect(r, phi) عکس عمل فوق را انجام میدهد.
۳. نکات فنی و محدودیتها
مقایسه اعداد مختلط
در پایتون، اعداد مختلط قابل مرتبسازی نیستند. یعنی عملگرهای <, >, <=, >= روی آنها کار نمیکنند و باعث خطای TypeError میشوند. تنها میتوان برابری (== یا !=) را بررسی کرد.
# 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) آنها استفاده میشود:
دقت ممیز شناور (Floating Point Precision)
از آنجا که .real و .imag از نوع float هستند، همان مسائل مربوط به دقت ممیز شناور در اینجا نیز صادق است. برای مقایسه دقیق برابری، بهتر است از تابع cmath.isclose() استفاده کنید.
