عدد مختلط

عدد مختلط

متوسط

دستورالعمل‌ها

یک عدد مختلط به شکل z = a + b * i بیان می‌شود، که در آن:

  • a بخش حقیقی است (یک عدد حقیقی)،

  • b بخش موهومی است (آن هم یک عدد حقیقی) و

  • i یکه‌ی موهومی است که در رابطه‌ی i^2 = -1 صدق می‌کند.

عملیات روی اعداد مختلط

مزدوج

مزدوج عدد مختلط z = a + b * i به این صورت به دست می‌آید:

zc = a - b * i

قدر مطلق

قدر مطلق (یا مدول) عدد z به این صورت تعریف می‌شود:

|z| = sqrt(a^2 + b^2)

مربع قدر مطلق برابر است با حاصل‌ضرب z در مزدوجش zc:

|z|^2 = z * zc = a^2 + b^2

جمع

مجموع دو عدد مختلط z1 = a + b * i و z2 = c + d * i با جمع کردن بخش‌های حقیقی و موهومی آن‌ها به‌طور جداگانه محاسبه می‌شود:

z1 + z2 = (a + b * i) + (c + d * i)
        = (a + c) + (b + d) * i

تفریق

تفاضل دو عدد مختلط از تفریق بخش‌های متناظرشان به دست می‌آید:

z1 - z2 = (a + b * i) - (c + d * i)
        = (a - c) + (b - d) * i

ضرب

حاصل‌ضرب دو عدد مختلط به این صورت تعریف می‌شود:

z1 * z2 = (a + b * i) * (c + d * i)
        = (a * c - b * d) + (b * c + a * d) * i

معکوس

معکوس یک عدد مختلط غیرصفر به این صورت به دست می‌آید:

1 / z = 1 / (a + b * i)
      = a / (a^2 + b^2) - b / (a^2 + b^2) * i

تقسیم

تقسیم یک عدد مختلط بر عددی دیگر به این صورت است:

z1 / z2 = z1 * (1 / z2)
        = (a + b * i) / (c + d * i)
        = (a * c + b * d) / (c^2 + d^2) + (b * c - a * d) / (c^2 + d^2) * i

توان‌رسانی

رساندن e (پایه‌ی لگاریتم طبیعی) به توانی مختلط را می‌توان با فرمول اویلر بیان کرد:

e^(a + b * i) = e^a * e^(b * i)
              = e^a * (cos(b) + i * sin(b))

الزامات پیاده‌سازی

با توجه به اینکه نباید از پشتیبانی داخلی زبان برای اعداد مختلط استفاده کنید، این عملیات را پیاده‌سازی کنید:

  • جمع دو عدد مختلط
  • تفریق دو عدد مختلط
  • ضرب دو عدد مختلط
  • تقسیم دو عدد مختلط
  • مزدوج یک عدد مختلط
  • قدر مطلق یک عدد مختلط
  • توان‌رسانی e (پایه‌ی لگاریتم طبیعی) به یک عدد مختلط

دستورالعمل‌های ویژه‌ی این ترک

برای شیء ComplexNumber باید عملگر تساوی خودتان را پیاده‌سازی کنید. این کار چالش مقایسه‌ی دو عدد ممیز شناور را پیش می‌آورد. شاید استفاده از متد isApproximatelyEqual(to:absoluteTolerance:) که در کتابخانه‌ی Numerics پیدا می‌شود مفید باشد. به دلیل مشکلات کارایی، فقط به بخش RealModule دسترسی خواهید داشت. برای وارد کردن آن کافی است در بالای فایل بنویسید: import RealModule. یک «تلورانس» 0.00001 باید برای قبولی در تست‌ها کافی باشد. کتابخانه از قبل در پروژه وارد شده است، پس فقط کافی است آن را در فایل خودتان وارد کنید.

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


منبع

Wikipediaاین لینک در پنجره یا تب جدیدی باز می‌شود.
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Swift Exercism

آماده‌اید عدد مختلط را شروع کنید؟

در Exercism ثبت‌نام کنید تا Swift را همراه با 35 مفهوم116 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.