المسارات
/
WebAssembly
WebAssembly
/
التمارين
/
الأعداد المركبة
الأعداد المركبة

الأعداد المركبة

صعب

التعليمات

يُعبَّر عن العدد المركب بالصيغة 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 (أساس اللوغاريتم الطبيعي) إلى قوة عدد مركب

يتطلب رفع الأعداد المركبة إلى قوى وجود دالة أسية ودالة جيب ودالة جيب تمام، وليس أي منها متاحًا في WebAssembly. لحسن الحظ، يمكن استخدام متسلسلة تايلور لحسابها. ينبغي أن تحصل على دقة 1/26! على الأقل لتتوافق مع القيم المتوقعة.

الدالة الأسية

exp(x) ≃ 1 + x + x ^ 2 / 2! + x ^ 3 / 3! + x ^ 4 / 4! + ... + x ^ n / n!

دالة الجيب

sin(x) ≃ x - x ^ 3 / 3! + x ^ 5 / 5! - x ^ 7 / 7! + ... - x ^ n / n!

دالة جيب التمام

cos(x) ≃ 1 - x ^ 2 / 2! + x ^ 4 / 4! - x ^ 6 / 6! + ... - x ^ n / n!

المصدر

ويكيبيديايفتح الرابط في نافذة أو علامة تبويب جديدة
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
WebAssembly Exercism

مستعد لبدء الأعداد المركبة؟

سجّل في Exercism لتتعلّم وتتقن WebAssembly عبر 87 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.