ধরুন আমরা নিম্নোক্ত ক্রিয়াকলাপগুলির সাথে একটি জটিল সংখ্যা শ্রেণী সংজ্ঞায়িত করে জটিল সংখ্যার কাজগুলি করতে চাই -
- দুটি জটিল সংখ্যা যোগ করতে
- add()
- উপ() দুটি জটিল সংখ্যা বিয়োগ করতে
- mul() দুটি জটিল সংখ্যাকে গুণ করতে
- দুটি জটিল সংখ্যাকে ভাগ করতে div() জটিল সংখ্যার মডুলাস পেতে
- mod()
জটিল সংখ্যাগুলি (a + bi) আকারে দেখানো হবে। আমরা দুটি জটিল সংখ্যা আছে, তাদের উপর এই অপারেশন সঞ্চালন করা হবে. ক্লাসের অভ্যন্তরে আমরা add(), sub(), mul() এবং div() পদ্ধতিগুলিকে ওভারলোড করি যাতে আমরা অপারেটরগুলিকে অপারেশনগুলি করতে ব্যবহার করতে পারি। জটিল সংখ্যা যথাযথ আকারে প্রিন্ট করার জন্য আমরা __str__() পদ্ধতি ওভারলোড করি।
সুতরাং, যদি ইনপুট হয় c1 =2+3i c2 =5-2i, তাহলে আউটপুট হবে (7.00 + 1.00i), (-3.00 + 5.00i), (16.00 + 11.00i), (0.14 + 0.66i) ), 3.61, 5.39.
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- বাস্তব অংশ পুনরায় এবং কাল্পনিক অংশ im সহ জটিল শ্রেণীর সংজ্ঞায়িত করুন
- একটি ফাংশন সংজ্ঞায়িত করুন()। এটি o লাগবে৷
- (re + o.re, im + o.im) দিয়ে একটি নতুন জটিল বস্তু ফেরত দিন
- একটি ফাংশন সাব() সংজ্ঞায়িত করুন। এটি o লাগবে৷
- (re - o.re, im - o.im) দিয়ে একটি নতুন জটিল বস্তু ফেরত দিন
- একটি ফাংশন mul() সংজ্ঞায়িত করুন। এটি o লাগবে৷
- (re * o.re -im * o.im, re * o.im + im * o.re) দিয়ে একটি নতুন জটিল বস্তু ফেরত দিন
- একটি ফাংশন div() সংজ্ঞায়িত করুন। এটি o লাগবে৷
- m :=o.re * o.re + o.im * o.im
- (re * o.re + im * o.im)/m, (im * o.re - re * o.im)/m) সহ একটি নতুন কমপ্লেক্স নম্বর বস্তু ফেরত দিন
- একটি ফাংশন mod() সংজ্ঞায়িত করুন। এটি লাগবে
- এর বর্গমূল ফেরত দিন (re * re + im * im)
- ওভারলোড __str__()।
- যদি im 0 এর মত হয়, তাহলে
- দুই দশমিক স্থান পর্যন্ত রিটার্ন করুন
- যদি re 0 এর মত হয়, তাহলে
- দুই দশমিক স্থান পর্যন্ত ফেরত দিন
- যদি im <0 হয়, তাহলে
- রিটার্ন - im i, উভয়ই (re এবং im দুই দশমিক স্থান পর্যন্ত)
- অন্যথায়,
- রিটার্ন + im i, উভয়ই (re এবং im দুই দশমিক স্থান পর্যন্ত)
উদাহরণ
আসুন আরও ভালভাবে বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখি
from math import sqrt
class Complex:
def __init__(self, real, imag):
self.re = real
self.im = imag
def __add__(self, o):
return Complex(self.re+o.re, self.im+o.im)
def __sub__(self, o):
return Complex(self.re-o.re, self.im-o.im)
def __mul__(self, o):
return Complex(self.re*o.re-self.im*o.im, self.re * o.im + self.im * o.re)
def __truediv__(self, o):
m = o.re * o.re + o.im * o.im
return Complex((self.re * o.re + self.im * o.im)/m, (self.im * o.re - self.re * o.im)/m)
def __str__(self):
if self.im == 0:
return '%.2f' % self.re
if self.re == 0:
return '%.2fi' % self.im
if self.im < 0:
return '%.2f - %.2fi' % (self.re, -self.im)
else:
return '%.2f + %.2fi' % (self.re, self.im)
def mod(self):
return sqrt(self.re*self.re+self.im*self.im)
def solve(comp1, comp2):
print(comp1 + comp2)
print(comp1 - comp2)
print(comp1 * comp2)
print(comp1 / comp2)
print('%.2f' % comp1.mod())
print('%.2f' % comp2.mod())
comp1 = Complex(2, 3)
comp2 = Complex(5, -2)
solve(comp1, comp2) ইনপুট
2, 3 5, -2
আউটপুট
7.00 + 1.00i -3.00 + 5.00i 16.00 + 11.00i 0.14 + 0.66i 3.61 5.39