একটি জটিল সংখ্যা প্রকাশ করা হয় 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টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।