নিউটন-কোটস ইন্টিগ্রেশন — ট্র্যাপিজয়ডাল রুল
এই পাঠে যা শিখবেন
- নিউমেরিক্যাল ইন্টিগ্রেশন কী এবং কেন এটি দরকার হয়
- ট্র্যাপিজয়ডাল রুলের জ্যামিতিক ও বীজগাণিতিক ভিত্তি — একক ও কম্পোজিট (একাধিক সাব-ইন্টারভাল) উভয় রূপে
- একটি সত্যিকারের Python ইমপ্লিমেন্টেশন —
sin(x)-এর ইন্টিগ্রাল আনুমানিক করে জানা মানের সাথে তুলনা - সাব-ইন্টারভাল সংখ্যা বাড়ানোর সাথে এররের
O(h²)কনভারজেন্স সত্যিকারের সংখ্যা দিয়ে যাচাই
১ · কেন নিউমেরিক্যাল ইন্টিগ্রেশন দরকার
একটি ইন্টিগ্রাল ∫ₐᵇ f(x) dx জ্যামিতিকভাবে f(x)-এর গ্রাফ ও x-অক্ষের মধ্যে থাকা
ক্ষেত্রফল বোঝায়। ক্যালকুলাসে আমরা এন্টিডেরিভেটিভ বের করে এটি এনালিটিক্যালি গণনা করতে শিখি — কিন্তু
অসংখ্য বাস্তব-বিশ্বের ফাংশনের কোনো ক্লোজড-ফর্ম এন্টিডেরিভেটিভ নেই (যেমন e^(-x²), যা
পরিসংখ্যানে নরমাল ডিস্ট্রিবিউশনে সর্বত্র ব্যবহৃত), অথবা ফাংশনটি শুধু বিচ্ছিন্ন সেন্সর-ডেটা হিসেবে পাওয়া
যায়। এই দুই ক্ষেত্রেই নিউমেরিক্যাল ইন্টিগ্রেশন (একে কোয়াড্রেচারও বলা
হয়) দরকার।
২ · ট্র্যাপিজয়ডাল রুল
সবচেয়ে সহজ ধারণা — [a, b] ইন্টারভালে f(x)-কে একটি সরলরেখা দিয়ে আনুমানিক করা,
যা একটি ট্র্যাপিজিয়াম তৈরি করে যার ক্ষেত্রফল সহজে গণনাযোগ্য:
এই একক ট্র্যাপিজিয়াম পুরো ইন্টারভালে খুব একটা নির্ভুল হয় না যদি ইন্টারভাল বড় হয় বা ফাংশনটি বাঁকা হয়।
তাই বাস্তবে কম্পোজিট ট্র্যাপিজয়ডাল রুল ব্যবহার করা হয় — ইন্টারভালটিকে nটি
সমান সাব-ইন্টারভালে ভেঙে (প্রতিটির প্রস্থ h = (b-a)/n) প্রতিটিতে আলাদা ট্র্যাপিজিয়াম বসিয়ে
যোগ করা:
লক্ষ্য করুন প্রতিটি ভেতরের পয়েন্ট দুইবার গণনা হয় (কারণ এটি দুটি পাশের ট্র্যাপিজিয়ামের ভাগীদার), শুধু প্রথম ও শেষ পয়েন্ট একবার গণনা হয়।
বক্ররেখাকে সরলরেখা দিয়ে আনুমানিক করলে ফাংশনটি যেখানে বাঁকা (দ্বিতীয় ডেরিভেটিভ বড়), সেখানে এরর বেশি হয় — এটাই ট্র্যাপিজয়ডাল রুলের এরর টার্মে দ্বিতীয় ডেরিভেটিভের উপস্থিতির কারণ।
কম্পোজিট ট্র্যাপিজয়ডাল রুলের এরর
O(h²) — L21-এর সেন্ট্রাল ডিফারেন্সের মতোই একই অর্ডার, একই টেইলর-সিরিজ যুক্তি থেকে আসে।ট্র্যাপিজয়ডাল রুল "নিউটন-কোটস" মেথডের পরিবারের সবচেয়ে সহজ সদস্য — যেখানে ফাংশনটিকে সমান-দূরত্বের পয়েন্টে পলিনোমিয়াল দিয়ে আনুমানিক করা হয় (ডিগ্রি ১ = ট্র্যাপিজয়ডাল, ডিগ্রি ২ = সিম্পসনস, L24-এ)।
৩ · সত্যিকারের ডেমো — sin(x)-এর ইন্টিগ্রাল
∫₀^π sin(x) dx-এর প্রকৃত মান জানা আছে — এন্টিডেরিভেটিভ -cos(x) ব্যবহার করে
এটি ঠিক ২। আমরা কম্পোজিট ট্র্যাপিজয়ডাল রুল হাতে-লেখা কোড দিয়ে বিভিন্ন সাব-ইন্টারভাল
সংখ্যা n-এ গণনা করে দেখব এরর কীভাবে সত্যিকারের মান ২-এর দিকে কনভার্জ করে।
import math
def f(x):
return math.sin(x)
a, b = 0.0, math.pi
true_val = 2.0 # sin(x)-এর ইন্টিগ্রাল 0 থেকে pi = [-cos(x)] = 2
def trapezoidal(f, a, b, n):
h = (b - a) / n
total = 0.5 * (f(a) + f(b))
for i in range(1, n):
total += f(a + i * h)
return total * h
print(f"true integral of sin(x) from 0 to pi = {true_val}")
print()
print(f"{'n':>4} {'h':>10} {'trapezoidal':>14} {'error':>12} {'error ratio':>12}")
prev_err = None
for n in [4, 8, 16, 32, 64, 128]:
h = (b - a) / n
approx = trapezoidal(f, a, b, n)
err = abs(approx - true_val)
ratio = (prev_err / err) if prev_err else float('nan')
print(f"{n:>4} {h:>10.6f} {approx:>14.10f} {err:>12.3e} {ratio:>12.3f}")
prev_err = err
n = 4-এ এরর ১.০৩৯ × ১০⁻¹। প্রতিবার n দ্বিগুণ করার সাথে (অর্থাৎ
h অর্ধেক) এরর কমছে: n=8-এ ২.৫৭৭ × ১০⁻² (অনুপাত
৪.০৩), n=16-এ ৬.৪৩০ × ১০⁻³ (অনুপাত ৪.০১),
n=32-এ ১.৬০৭ × ১০⁻³ (অনুপাত ৪.০০), এবং n=128
পর্যন্ত অনুপাত স্থিরভাবে ৪.০০-এর কাছাকাছি থাকে। এই অনুপাত ঠিক ৪ = ২² —
যেমনটা O(h²) মেথডের কাছে আশা করা হয়। h অর্ধেক করলে এরর ঠিক এক-চতুর্থাংশ হয়ে
যাচ্ছে, বাস্তব সংখ্যা দিয়ে নিশ্চিত হলো।
ট্র্যাপিজয়ডাল রুল একটি ইন্টারভালকে ছোট সাব-ইন্টারভালে ভেঙে প্রতিটিতে ফাংশনটিকে সরলরেখা দিয়ে
আনুমানিক করে — এবং এর ফলে O(h²) এরর কনভারজেন্স পাওয়া যায়, উপরের কোডে সরাসরি যাচাই করা
হয়েছে। পরের পাঠে (L24) আমরা দেখব একই ধারণা কিন্তু পলিনোমিয়াল ফিটের ডিগ্রি ১ বাড়িয়ে (প্যারাবোলা
ব্যবহার করে) — সিম্পসনস রুল — একই n-এ কতটা বেশি নির্ভুলতা দেয়।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১
কম্পোজিট ট্র্যাপিজয়ডাল রুলের ফর্মুলায় ভেতরের পয়েন্টগুলোর গুণক ২, কিন্তু প্রথম ও
শেষ পয়েন্টের গুণক ১। কেন এই পার্থক্য?
প্রতিটি ভেতরের পয়েন্ট দুটি সংলগ্ন সাব-ইন্টারভালের (একটি বামে, একটি ডানে) সীমানা — তাই সেই পয়েন্টে
f-এর মান দুটি আলাদা ট্র্যাপিজিয়ামের ক্ষেত্রফল গণনায় ব্যবহৃত হয়, ফলে যোগফলে এটি দুইবার
আসে। প্রথম ও শেষ পয়েন্ট শুধু একটি সাব-ইন্টারভালের সীমানা, তাই একবারই গণনা হয়।
প্র ০২
যদি f(x) নিজেই একটি সরলরেখা হয় (যেমন f(x) = 3x + 2), ট্র্যাপিজয়ডাল
রুলের এরর কত হবে বলে আপনার ধারণা — যেকোনো n-এ?
ঠিক শূন্য (ফ্লোটিং-পয়েন্ট রাউন্ড-অফ ছাড়া)! ট্র্যাপিজয়ডাল রুল প্রতিটি সাব-ইন্টারভালে
f-কে একটি সরলরেখা দিয়ে আনুমানিক করে — যদি f নিজেই একটি সরলরেখা হয়, তাহলে
এই আনুমানিকীকরণ কোনো এরর তৈরি করে না, এটি ঠিক নিখুঁত। এই যুক্তিটাই এরর ফর্মুলায় দ্বিতীয় ডেরিভেটিভের
উপস্থিতি ব্যাখ্যা করে — সরলরেখার দ্বিতীয় ডেরিভেটিভ শূন্য।
প্র ০৩
উপরের কোড সেলে আমরা n-কে ৪ থেকে ১২৮ পর্যন্ত দ্বিগুণ করে গিয়েছি এবং প্রতিবার এরর
প্রায় ঠিক ৪ গুণ কমেছে। এই প্যাটার্নটি কি অসীম পর্যন্ত n বাড়ালে চলতেই থাকবে?
তাত্ত্বিকভাবে O(h²) প্যাটার্ন h ছোট হতে থাকা পর্যন্ত বজায় থাকে, কিন্তু
বাস্তবে L21-এর মতোই — n অত্যন্ত বড় (অর্থাৎ h অত্যন্ত ছোট) হয়ে গেলে
ফ্লোটিং-পয়েন্ট রাউন্ড-অফ এরর জমতে জমতে প্রাধান্য পেতে শুরু করবে (প্রতিটি যোগফলে ছোট ছোট রাউন্ড-অফ
এরর যোগ হতে থাকে), এবং একটি বিন্দুর পর মোট এরর আর কমবে না, বরং সামান্য বাড়তে পারে।
অনুশীলন
-
চিন্তা করুন: উপরের কোড সেলে
n = 256যোগ করলে (আগের সর্বোচ্চn=128-এর দ্বিগুণ) এরর আনুমানিক কত হবে বলে আপনার ধারণা?n=128-এর এরর১.০০৪ × ১০⁻⁴।O(h²)প্যাটার্ন অনুযায়ীn=256-এ এরর এর প্রায় এক-চতুর্থাংশ, অর্থাৎ প্রায়২.৫ × ১০⁻⁵হওয়ার কথা। -
পরীক্ষা করুন: কোড সেলের
[4, 8, 16, 32, 64, 128]তালিকায়256যোগ করে Run চেপে আপনার অনুমান যাচাই করুন।n=256-এ এরর হয় আনুমানিক২.৫১ × ১০⁻⁵— যাn=128-এর এরর (১.০০৪ × ১০⁻⁴)-এর প্রায় এক-চতুর্থাংশ, ঠিকO(h²)প্যাটার্ন বজায় রেখে। প্যাটার্নটি ধারাবাহিকভাবে বজায় থাকছে কারণn=256এখনো এতটা বড় নয় যে রাউন্ড-অফ এরর প্রাধান্য পাওয়া শুরু করবে।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ এরর অ্যানালাইসিস, রুট-ফাইন্ডিং, লিনিয়ার সিস্টেম, ইন্টারপোলেশন, নিউমেরিক্যাল ইন্টিগ্রেশন, ODE সলভিং, আইগেনভ্যালু মেথড, অপ্টিমাইজেশন ও ক্যাপস্টোন — বাকি পাঠগুলো একে একে যুক্ত হচ্ছে।
-
L22 · রিচার্ডসন এক্সট্রাপোলেশন পূর্ববর্তী পাঠ
একই
O(h²)-প্যাটার্ন কৌশল ট্র্যাপিজয়ডাল রুলের উপর প্রয়োগ করলে রম্বার্গ ইন্টিগ্রেশন তৈরি হয়। - সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, Machine Learning, Deep Learning, System Design, Cybersecurity, Cloud Computing & DevOps, এবং আরও অনেক কোর্স — সব এক জায়গায়।