يُعبَّر عن العدد المركب بالصيغة 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))
بما أنه لا ينبغي لك استخدام الدعم المدمج للأعداد المركبة، فنفّذ العمليات التالية:
هذا تمرين موجّه بالكائنات، وفيه تنفّذ ComplexNumbers على هيئة صنف.
ستقارن الاختبارات نسختين من الأعداد المركّبة للتحقق من تساويهما.
هذا يعني أن على صنفك أن ينفّذ الطريقة الفوقية __eq.
كما تجري الاختبارات عمليات حسابية على الأعداد المركّبة، لذا هناك طرق فوقية حسابية يجب تنفيذها.
ستُجري بعض دوال الأعداد المركّبة عمليات حسابية على أعداد الفاصلة العائمة. وسيكون على "التساوي" لديك أن يتعامل مع أعداد متساوية تقريبًا.
سجّل في Exercism لتتعلّم وتتقن MoonScript عبر 126 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.