একটি পজিটিভ সংখ্যার সবসময় দুটি রিয়াল রুট থাকে। উদাহরণস্বরূপ, x² = 25 হলে x = ±5। কিন্তু x² = -25 হলে রিয়াল রুট নেই। যেকোনো নেগেটিভ সংখ্যার বর্গমূল হলো এর অ্যাবসোলিউট ভ্যালুর বর্গমূল গুণ একটি ইমেজিনারি ইউনিট j = √-1।
তাহলে √-25 = √25 × √-1 = 5j
একটি কমপ্লেক্স নাম্বার রিয়াল এবং ইমেজিনারি কম্পোনেন্ট দিয়ে গঠিত। এটি x+yj হিসেবে রিপ্রেজেন্ট করা হয়। এখানে x এবং y উভয়ই রিয়াল সংখ্যা। y ইমেজিনারি ইউনিট দিয়ে গুণ করলে কমপ্লেক্স নাম্বারের ইমেজিনারি পার্ট তৈরি হয়।
উদাহরণ: 3+2j, 10-5.5J, 9.55+2.3j, 5.11e-6+4j
পাইথনে কমপ্লেক্স নাম্বার
পাইথনে বিল্ট-ইন complex ডেটা টাইপ রয়েছে। কমপ্লেক্স নাম্বার অবজেক্ট লিটারেল রিপ্রেজেন্টেশন দিয়ে তৈরি করা যায়:
>>> x = 2+3j >>> type(x) <class 'complex'>
কমপ্লেক্স নাম্বার অবজেক্টের দুটি অ্যাট্রিবিউট রয়েছে: real (রিয়াল কম্পোনেন্ট রিটার্ন করে) এবং imag (ইমেজিনারি কম্পোনেন্ট রিটার্ন করে, j বাদে)।
>>> x.real 2.0 >>> x.imag 3.0
এছাড়া conjugate() মেথড রয়েছে। একটি কমপ্লেক্স নাম্বারের কনজুগেটের রিয়াল কম্পোনেন্ট একই থাকে কিন্তু ইমেজিনারি কম্পোনেন্টের চিহ্ন বদলায়। তাই 2+3j-এর কনজুগেট 2-3j।
>>> x.conjugate() (2-3j)
পাইথনে বিল্ট-ইন complex() ফাংশনও রয়েছে যা কমপ্লেক্স নাম্বার অবজেক্ট রিটার্ন করে। এই ফাংশন দুটি প্যারামিটার নেয়—একটি রিয়াল কম্পোনেন্টের জন্য এবং অন্যটি ইমেজিনারি কম্পোনেন্টের জন্য। তারা যেকোনো নিউমেরিক টাইপের হতে পারে (int, float বা complex)।
>>> complex(9, 5) (9+5j) >>> complex(-6, -2.5) (-6-2.5j) >>> complex(1.5j, 2.5j) (-2.5+1.5j)
যদি শুধু একটি প্যারামিটার দেয়া হয়, তবে সেটিকে রিয়াল কম্পোনেন্ট হিসেবে বিবেচনা করা হয় এবং ইমেজিনারি কম্পোনেন্ট ০ ধরা হয়।
>>> complex(15) (15+0j)
ফাংশনটি স্ট্রিং আর্গুমেন্টও নিতে পারে, শর্ত স্ট্রিংটি নিউমেরিক রিপ্রেজেন্টেশন ধারণ করছে।
>>> complex('51')
(51+0j)
>>> complex('1.5')
(1.5+0j)
কমপ্লেক্স নাম্বার এর আর্থমেটিক অপারেশন
যোগ ও বিয়োগ
কমপ্লেক্স নাম্বারের যোগ ও বিয়োগ ইন্টিজার বা ফ্লোটের মতোই। রিয়াল এবং ইমেজিনারি পার্ট আলাদা আলাদা যোগ/বিয়োগ হয়।
>>> a = 6+4j >>> b = 3+6j >>> a+b (9+10j) >>> a-b (3-2j)
গুন
কমপ্লেক্স নাম্বারকে বাইনোমিয়াল ধরে প্রতিটি টার্মকে অন্যটির প্রতিটি টার্ম দিয়ে গুণ করতে হয়।
a = 6+4j b = 3+2j c = a*b = (6+4j)*(3+2j) = 18+12j+12j+8*(-1) = 10+24j
পাইথন কনসোলে ভেরিফাই:
>>> a = 6+4j >>> b = 3+2j >>> a*b (10+24j)
ভাগ
দুটি কমপ্লেক্স নাম্বার a = 2+4j এবং b = 1-2j হলে a/b বের করতে হলে:
- হরের কনজুগেট বের করুন:
1+2j - অঙ্ক এবং হর দুটোকেই কনজুগেট দিয়ে গুণ করুন
c = (2+4j)*(1+2j) / (1-2j)*(1+2j) = (2+4j+4j+8*(-1)) / (1+2j-2j-4*(-1)) = (-6+8j) / 5 = -1.2+1.6j
পাইথন কনসোলে ভেরিফাই:
>>> a = 2+4j >>> b = 1-2j >>> a/b (-1.2+1.6j)
cmath মডিউল
পাইথনের math মডিউল ফ্লোটিং পয়েন্ট নম্বরের জন্য। কমপ্লেক্স নাম্বারের জন্য cmath মডিউল রয়েছে।
কমপ্লেক্স নাম্বার z = x+yj কারtezিয়ান রিপ্রেজেন্টেশন। এটি ইন্টারন্যালি পোলার কোঅর্ডিনেটে রিপ্রেজেন্টেড: মডুলাস r (built-in abs() ফাংশন দিয়ে রিটার্ন হয়) এবং ফেজ এ্যাঙ্গেল Φ (ফাই) যা রেডিয়ানে,x-অক্ষ এবং অরিজিনের সাথে x-কে জড়িত লাইনের মধ্যে কাউন্টারক্লকওয়াইজ কোণ।
cmath এর মূল ফাংশনসমূহ
polar() - পোলার রিপ্রেজেন্টেশন
>>> import cmath >>> a = 2+4j >>> cmath.polar(a) (4.47213595499958, 1.1071487177940904)
মডুলাস abs() দিয়েও পাওয়া যায়:
>>> abs(a) 4.47213595499958
phase() - ফেজ এ্যাঙ্গেল
>>> cmath.phase(a) 1.1071487177940904
rect() - কারtezিয়ান রিপ্রেজেন্টেশন (পোলার থেকে)
>>> cmath.rect(4.47213595499958, 1.1071487177940904) (2.0000000000000004+4j)
ট্রাইগনোমেট্রিক ফাংশন
>>> p = cmath.phase(a) >>> cmath.sin(p) (0.8944271909999159+0j)
cos(), tan(), asin(), acos(), atan() ও রয়েছে।
এক্সপোনেনশিয়াল ও লগারিদমিক ফাংশন
>>> cmath.exp(a) (-1.1312043837568135+2.4717266720048188j) >>> a = 1+2j >>> cmath.log10(a) (0.3494850021680094+0.480828578784234j)
বর্গমূল
>>> cmath.sqrt(a) (1.272019649514069+0.7861513777574233j)
এই আর্টিকেলে পাইথনের কমপ্লেক্স নাম্বার ডেটা টাইপের গুরুত্বপূর্ণ ফিচার, আর্থমেটিক অপারেশন এবং cmath মডিউলের ফাংশনগুলো আলোচনা করা হয়েছে।