পাইথন, জটিল সংখ্যাগুলির সাথে কাজ করার জন্য জটিল প্রকারগুলি (পরম মান, পতন, পোলার রূপান্তর ইত্যাদি)

ব্যবসায়

জটিল সংখ্যা পরিচালনার জন্য পাইথনের একটি প্রমিত ধরন রয়েছে, COMPLEX প্রকার। আপনি যদি কেবল সাধারণ গণনা করতে চান তবে আপনাকে কোনো মডিউল আমদানি করতে হবে না, তবে আপনি যদি স্ট্যান্ডার্ড লাইব্রেরি cmath আমদানি করেন তবে আপনি জটিল সংখ্যার সাথে সম্পর্কিত গাণিতিক ফাংশন (সূচক, লগারিদমিক, ত্রিকোণমিতিক, ইত্যাদি) ব্যবহার করতে পারেন।

নিম্নলিখিত বিষয়বস্তু নমুনা কোড সহ এখানে ব্যাখ্যা করা হয়.

  • জটিল ভেরিয়েবল তৈরি করুন
  • বাস্তব এবং কাল্পনিক অংশ পান:real,imagবৈশিষ্ট্য
  • সংযোজিত জটিল সংখ্যা পান:conjugate()পদ্ধতি
  • পরম মান পান (ম্যাগনিটিউড):abs()ফাংশন (যেমন গণিত, প্রোগ্রামিং, প্রোগ্রামিং)
  • অবনমন (পর্যায়) প্রাপ্ত করুন:math,cmathমডিউল
  • পোলার সমন্বয় রূপান্তর (পোলার ফর্ম উপস্থাপনা):math,cmathমডিউল
  • জটিল সংখ্যার গণনা (চতুর্ভুজ, ক্ষমতা, বর্গমূল)

জটিল ভেরিয়েবল তৈরি করুন

j দ্বারা কাল্পনিক একক নির্দেশ করুন এবং নিম্নলিখিতটি লিখুন, লক্ষ্য করুন যে এটি i নয়।

c = 3 + 4j

print(c)
print(type(c))
# (3+4j)
# <class 'complex'>

কাল্পনিক অংশটি 1 হলে, এটি বাদ দিলে একটি NameError হয়। যদি j নামের একটি ভেরিয়েবল প্রথমে সংজ্ঞায়িত করা হয়, তবে এটি সেই পরিবর্তনশীল হিসাবে বিবেচিত হয়।

1j
এটা স্পষ্টভাবে এই ভাবে বলা উচিত.

# c = 3 + j
# NameError: name 'j' is not defined

c = 3 + 1j

print(c)
# (3+1j)

প্রকৃত অংশ 0 হলে, এটি বাদ দেওয়া যেতে পারে।

c = 3j

print(c)
# 3j

আপনি যদি 0 এর একটি কাল্পনিক অংশের সাথে একটি জটিল জটিল প্রকার হিসাবে একটি মান সংজ্ঞায়িত করতে চান, তাহলে স্পষ্টভাবে 0 লিখুন। নীচে বর্ণিত হিসাবে, অপারেশনগুলি জটিল প্রকার এবং পূর্ণসংখ্যার প্রকার বা ভাসমান-বিন্দু প্রকারের মধ্যে সঞ্চালিত হতে পারে।

c = 3 + 0j

print(c)
# (3+0j)

বাস্তব এবং কাল্পনিক অংশ ফ্লোটিং-পয়েন্ট ফ্লোট টাইপ হিসাবে নির্দিষ্ট করা যেতে পারে। সূচকীয় স্বরলিপিও গ্রহণযোগ্য।

c = 1.2e3 + 3j

print(c)
# (1200+3j)

এটি “জটিল(বাস্তব অংশ, কাল্পনিক অংশ)” এর মত “জটিল” টাইপের কন্সট্রাকটর দ্বারাও তৈরি করা যেতে পারে।

c = complex(3, 4)

print(c)
print(type(c))
# (3+4j)
# <class 'complex'>

জটিল সংখ্যার বাস্তব এবং কাল্পনিক অংশ পান:real,imagবৈশিষ্ট্য

একটি জটিল জটিল প্রকারের বাস্তব এবং কাল্পনিক অংশ যথাক্রমে বাস্তব এবং ইমেজ বৈশিষ্ট্যের সাথে পাওয়া যেতে পারে। উভয়ই ফ্লোটিং-পয়েন্ট ফ্লোট প্রকার।

c = 3 + 4j

print(c.real)
print(type(c.real))
# 3.0
# <class 'float'>

print(c.imag)
print(type(c.imag))
# 4.0
# <class 'float'>

এটা শুধুমাত্র পঠিত এবং পরিবর্তন করা যাবে না.

# c.real = 5.5
# AttributeError: readonly attribute

সংযোজিত জটিল সংখ্যা পান:conjugate()

সমন্বিত জটিল সংখ্যা পেতে, কনজুগেট() পদ্ধতি ব্যবহার করুন।

c = 3 + 4j

print(c.conjugate())
# (3-4j)

একটি জটিল সংখ্যার পরম মান (ম্যাগনিটিউড) প্রাপ্ত করুন:abs()

একটি জটিল সংখ্যার পরম মান (ম্যাগনিটিউড) পেতে, বিল্ট-ইন ফাংশন abs() ব্যবহার করুন।

c = 3 + 4j

print(abs(c))
# 5.0

c = 1 + 1j

print(abs(c))
# 1.4142135623730951

একটি জটিল সংখ্যার অবনমন (পর্যায়) প্রাপ্ত করুন:math,cmathমডিউল

একটি জটিল সংখ্যার অবনমন (পর্যায়) পেতে, গণিত বা cmath মডিউল ব্যবহার করুন।

cmath মডিউল জটিল সংখ্যার জন্য একটি গাণিতিক ফাংশন মডিউল।

এটি সংজ্ঞায়িত হিসাবে বিপরীত স্পর্শক ফাংশন math.atan2() দিয়ে গণনা করা যেতে পারে, অথবা cmath.phase() ব্যবহার করুন, যা হ্রাস (ফেজ) প্রদান করে।

import cmath
import math

c = 1 + 1j

print(math.atan2(c.imag, c.real))
# 0.7853981633974483

print(cmath.phase(c))
# 0.7853981633974483

print(cmath.phase(c) == math.atan2(c.imag, c.real))
# True

উভয় ক্ষেত্রেই, কোণের একক যা প্রাপ্ত করা যায় তা হল রেডিয়ান। ডিগ্রিতে রূপান্তর করতে, math.degrees() ব্যবহার করুন।

print(math.degrees(cmath.phase(c)))
# 45.0

জটিল সংখ্যার মেরু স্থানাঙ্ক রূপান্তর (পোলার আনুষ্ঠানিক উপস্থাপনা):math,cmathমডিউল

উপরে উল্লিখিত হিসাবে, একটি জটিল সংখ্যার পরম মান (ব্যাপকতা) এবং অবনমন (পর্যায়) প্রাপ্ত করা যেতে পারে, তবে cmath.polar() ব্যবহার করে এগুলিকে (পরম মান, হ্রাস) টিপল হিসাবে একসাথে পাওয়া যেতে পারে।

c = 1 + 1j

print(cmath.polar(c))
print(type(cmath.polar(c)))
# (1.4142135623730951, 0.7853981633974483)
# <class 'tuple'>

print(cmath.polar(c)[0] == abs(c))
# True

print(cmath.polar(c)[1] == cmath.phase(c))
# True

পোলার স্থানাঙ্ক থেকে কার্টেসিয়ান স্থানাঙ্কে রূপান্তর cmath.rect() ব্যবহার করে করা হয়। cmath.rect(পরম মান, বিচ্যুতি) এবং অনুরূপ আর্গুমেন্ট সমতুল্য জটিল জটিল জটিল ধরনের মান পেতে ব্যবহার করা যেতে পারে।

print(cmath.rect(1, 1))
# (0.5403023058681398+0.8414709848078965j)

print(cmath.rect(1, 0))
# (1+0j)

print(cmath.rect(cmath.polar(c)[0], cmath.polar(c)[1]))
# (1.0000000000000002+1j)

বাস্তব এবং কাল্পনিক অংশগুলি পরম মান এবং অবনমন কোণ থেকে কোসাইন math.cos() এবং sine math.sin() দ্বারা গণনা করা ফলাফলের সমতুল্য।

r = 2
ph = math.pi

print(cmath.rect(r, ph).real == r * math.cos(ph))
# True

print(cmath.rect(r, ph).imag == r * math.sin(ph))
# True

জটিল সংখ্যার গণনা (চতুর্ভুজ, ক্ষমতা, বর্গমূল)

সাধারণ গাণিতিক অপারেটর ব্যবহার করে চারটি পাটিগণিত অপারেশন এবং শক্তি গণনা করা যেতে পারে।

c1 = 3 + 4j
c2 = 2 - 1j

print(c1 + c2)
# (5+3j)

print(c1 - c2)
# (1+5j)

print(c1 * c2)
# (10+5j)

print(c1 / c2)
# (0.4+2.2j)

print(c1 ** 3)
# (-117+44j)

বর্গমূল **0.5 দিয়ে গণনা করা যেতে পারে, কিন্তু এটি ত্রুটির পরিচয় দেয়। cmath.sqrt() সঠিক মান গণনা করতে ব্যবহার করা যেতে পারে।

print((-3 + 4j) ** 0.5)
# (1.0000000000000002+2j)

print((-1) ** 0.5)
# (6.123233995736766e-17+1j)

print(cmath.sqrt(-3 + 4j))
# (1+2j)

print(cmath.sqrt(-1))
# 1j

এটি জটিল প্রকার, int প্রকার এবং ফ্লোট প্রকারের সাথে গাণিতিক ক্রিয়াকলাপও সম্পাদন করতে পারে।

print(c1 + 3)
# (6+4j)

print(c1 * 0.5)
# (1.5+2j)