মূলদ সংখ্যা

মূলদ সংখ্যা

মধ্যম

নির্দেশনা

মূলদ সংখ্যা বলতে a এবং b দুটি ইন্টিজারের ভাগফলকে বোঝায়, যেখানে এদের যথাক্রমে লব ও হর বলা হয় এবং b != 0।

Note

মনে রাখবেন, গাণিতিকভাবে হর কখনো শূন্য হতে পারে না। তবে মূলদ সংখ্যার অনেক ইমপ্লিমেন্টেশনে দেখবেন, হরকে শূন্য হতে দেওয়া হয়, আর এর আচরণ ফ্লোটিং পয়েন্ট সংখ্যায় ধনাত্মক বা ঋণাত্মক অসীমের মতো। সে ক্ষেত্রে সাধারণত হর ও লব একইসাথে শূন্য হতে পারে না।

r = a/b মূলদ সংখ্যাটির পরম মান |r| হলো |a|/|b|.

r₁ = a₁/b₁ এবং r₂ = a₂/b₂ দুটি মূলদ সংখ্যার যোগফল r₁ + r₂ = a₁/b₁ + a₂/b₂ = (a₁ * b₂ + a₂ * b₁) / (b₁ * b₂).

r₁ = a₁/b₁ এবং r₂ = a₂/b₂ দুটি মূলদ সংখ্যার বিয়োগফল r₁ - r₂ = a₁/b₁ - a₂/b₂ = (a₁ * b₂ - a₂ * b₁) / (b₁ * b₂).

r₁ = a₁/b₁ এবং r₂ = a₂/b₂ দুটি মূলদ সংখ্যার গুণফল (গুণ) r₁ * r₂ = (a₁ * a₂) / (b₁ * b₂).

একটি মূলদ সংখ্যা r₁ = a₁/b₁-কে অন্য একটি r₂ = a₂/b₂ দিয়ে ভাগ করলে হয় r₁ / r₂ = (a₁ * b₂) / (a₂ * b₁), যদি a₂ শূন্য না হয়।

কোনো মূলদ সংখ্যা r = a/b-কে অঋণাত্মক ইন্টিজার ঘাত n-এ উন্নীত করলে হয় r^n = (a^n)/(b^n).

কোনো মূলদ সংখ্যা r = a/b-কে ঋণাত্মক ইন্টিজার ঘাত n-এ উন্নীত করলে হয় r^n = (b^m)/(a^m), যেখানে m = |n|.

কোনো মূলদ সংখ্যা r = a/b-কে বাস্তব (ফ্লোটিং পয়েন্ট) সংখ্যা x ঘাতে উন্নীত করলে হয় ভাগফল (a^x)/(b^x), যা একটি বাস্তব সংখ্যা।

কোনো বাস্তব সংখ্যা x-কে মূলদ ঘাত r = a/b-এ উন্নীত করলে হয় x^(a/b) = root(x^a, b), যেখানে root(p, q) হলো p-এর q-তম মূল।

নিচের অপারেশনগুলো ইমপ্লিমেন্ট করুন:

  • দুটি মূলদ সংখ্যার যোগ, বিয়োগ, গুণ ও ভাগ,
  • পরম মান, একটি প্রদত্ত মূলদ সংখ্যাকে ইন্টিজার ঘাতে উন্নীত করা, একটি প্রদত্ত মূলদ সংখ্যাকে বাস্তব (ফ্লোটিং পয়েন্ট) ঘাতে উন্নীত করা, একটি বাস্তব সংখ্যাকে মূলদ ঘাতে উন্নীত করা।

আপনার মূলদ সংখ্যার ইমপ্লিমেন্টেশন সবসময় লঘিষ্ঠ আকারে থাকা উচিত। যেমন, 4/4 লঘিষ্ঠ আকারে 1/1 হবে, 30/60 হবে 1/2, 12/8 হবে 3/2, ইত্যাদি। কোনো মূলদ সংখ্যা r = a/b-কে লঘিষ্ঠ আকারে আনতে a ও b-কে তাদের গরিষ্ঠ সাধারণ গুণনীয়ক (gcd) দিয়ে ভাগ করুন। তাই, যেমন, gcd(12, 8) = 4, ফলে r = 12/8-কে লঘিষ্ঠ করে (12/4)/(8/4) = 3/2 লেখা যায়। মূলদ সংখ্যার লঘিষ্ঠ রূপটি "আদর্শ রূপে" থাকা উচিত (হর সর্বদা একটি ধনাত্মক ইন্টিজার হবে)। যদি হরে ঋণাত্মক ইন্টিজার থাকে, তবে আদর্শ রূপে পৌঁছানো নিশ্চিত করতে লব ও হর দুটোকেই -1 দিয়ে গুণ করুন। যেমন, 3/-4-কে লঘিষ্ঠ করে -3/4 লেখা উচিত।

ধরে নিন যে আপনি যে প্রোগ্রামিং ভাষা ব্যবহার করছেন, সেটিতে মূলদ সংখ্যার কোনো ইমপ্লিমেন্টেশন নেই।

একটি বাস্তব সংখ্যা দিয়ে মূলদ সংখ্যার সূচকীকরণ করতে হলে এমন একটি সংখ্যার ঘাত নির্ণয় করতে হয় যা ইন্টিজার নয়, আর এই সুবিধাটি WebAssembly-তে নেটিভভাবে পাওয়া যায় না।

তবে আপনি x ^ y-কে x ^ y = exp(y * ln(x)) হিসেবেও প্রকাশ করতে পারেন।

আর সৌভাগ্যের বিষয় হলো, সূচকীয় ফাংশন ও স্বাভাবিক লগারিদম নির্ণয় করতে বিভিন্ন ধারা ব্যবহার করা যায়।

সূচকীয় ফাংশন

সূচকীয় ফাংশনের জন্য সবচেয়ে ভালো সমাধান হলো একটি টেলর ধারা:

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

লগারিদম ফাংশন (ধনাত্মক x-এর জন্য)

স্বাভাবিক লগারিদম দক্ষভাবে নির্ণয় করার একাধিক উপায় আছে। তার একটি হলো ইনভার্স হাইপারবলিক ট্যানজেন্ট-ভিত্তিক একটি ধারা:

ln(x) / 2 ≃ y + y ^ 3 / 3 + y ^ 5 / 5 + ... + y ^ n / n where y = (x - 1) / (x + 1)

স্বাভাবিক লগারিদম নির্ণয়ের আরেকটি টেলর ধারাও আছে:

ln(x) = (x - 1) - (x - 1) ^ 2 / 2 + (x  - 1) ^ 3 / 3 - (x - 1) ^ 4 / 4 ... + (x - 1) ^ n / n

এটি কিন্তু শুধু 0 আর 2-এর মধ্যবর্তী x-এর জন্য নির্ভুল। তবে আমরা ln(x) = - ln(1 / x)-ও ব্যবহার করতে পারি।

ইন্টিজার সূচকীকরণ

ইন্টিজার সূচকীকরণের জন্য গুণ এবং লুপ কিংবা রিকার্শন ব্যবহার করাই ভালো, পারফরম্যান্স ও নির্ভুলতা দুটি কারণেই। আরও ভালো পারফরম্যান্সের জন্য হর্নারের পদ্ধতি ব্যবহার করে গুণের সংখ্যা কমানো যায়।


সূত্র

Wikipediaলিংকটি নতুন উইন্ডো বা ট্যাবে খোলে
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
WebAssembly Exercism

মূলদ সংখ্যা শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, WebAssembly ট্র্যাকের 87টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।