পাঠ ২৮ · ৫৭-এর মধ্যে · মডিউল ৬
Home / Courses / Numerical Methods / এরর অ্যানালাইসিস

অয়লার মেথডের এরর অ্যানালাইসিস

Error analysis of Euler's method
১১ মিনিট পড়া মধ্যম · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • লোকাল ট্রাংকেশন এরর ও গ্লোবাল এরর-এর পার্থক্য
  • টেলর সিরিজ থেকে কীভাবে অয়লার মেথডের O(h²) লোকাল / O(h) গ্লোবাল এরর বের হয় তার স্বজ্ঞাত ব্যাখ্যা
  • ছয়টি ভিন্ন step size-এ প্রকৃত কম্পিউটেড এরর মেপে "প্রথম-ক্রম কনভারজেন্স" সরাসরি যাচাই করা
  • কেন এই সম্পর্ক ব্যবহারিকভাবে গুরুত্বপূর্ণ — কত ছোট h লাগবে একটি নির্দিষ্ট নির্ভুলতা পেতে, তা আগে থেকে অনুমান করা যায়

১ · লোকাল ট্রাংকেশন এরর — এক ধাপের ভুল

L27-এ আমরা দেখেছি অয়লার মেথড প্রকৃত সমাধান বক্র y(x)-কে একটি সরলরেখা (ট্যানজেন্ট লাইন) দিয়ে আনুমানিক করে। প্রকৃত সমাধানের টেলর সিরিজ সম্প্রসারণ লিখলে বোঝা যায় ঠিক কতটা তথ্য এই আনুমানিকতায় বাদ পড়ে:

$$y(x_n + h) = y(x_n) + h\,y'(x_n) + \frac{h^2}{2}y''(x_n) + \frac{h^3}{6}y'''(x_n) + \cdots$$

অয়লার মেথড শুধু প্রথম দুটি পদ রাখে (y(x_n) + h·y'(x_n), যেখানে y'(x_n) = f(x_n, y_n)) — বাকি সবকিছু ট্রাংকেট (কেটে ফেলা) করে দেয়। যে পদটি সবচেয়ে বড় ও প্রথম বাদ পড়ে সেটি হলো h²/2 · y''(x_n) — তাই এক ধাপের লোকাল ট্রাংকেশন এরর হলো O(h²) (স্থির y''-এর মাত্রার সমানুপাতিক)।

২ · গ্লোবাল এরর — সব ধাপের যোগফল

একটি নির্দিষ্ট ইন্টারভাল [x₀, x_end] কভার করতে ধাপ সংখ্যা n = (x_end - x₀) / h — অর্থাৎ h ছোট করলে ধাপ সংখ্যা 1/h অনুপাতে বাড়ে। যদি প্রতিটি ধাপে O(h²) এরর যোগ হয়, এবং প্রায় 1/h-সংখ্যক ধাপ থাকে, তাহলে (আনুমানিকভাবে, ধরে নিয়ে এররগুলো একই দিকে জমা হয়) মোট গ্লোবাল এরর:

$$\text{Global error} \approx n \times O(h^2) = \frac{1}{h} \times O(h^2) = O(h)$$

এই কারণেই অয়লার মেথডকে প্রথম-ক্রম (first-order) মেথড বলা হয় — গ্লোবাল এরর h-এর সাথে (আনুমানিকভাবে) সরলরৈখিকভাবে সমানুপাতিক। এই যুক্তিটি একটি ফরমাল প্রমাণ নয় (সেটি Lipschitz কন্ডিশন ও একটি বাউন্ডিং আর্গুমেন্ট লাগে, যা এই কোর্সের পরিধির বাইরে) — কিন্তু এটি সঠিক মাত্রার (order) ইঙ্গিত দেয়, এবং নিচে আমরা সরাসরি কম্পিউটেড ডেটা দিয়ে এটি যাচাই করব।

লোকাল ট্রাংকেশন এরর
O(h²) — এক ধাপে ঠিক কতটা ভুল যোগ হয়, ধরে নিয়ে আগের ধাপ পর্যন্ত সব সঠিক ছিল।
গ্লোবাল এরর
O(h) — চূড়ান্ত বিন্দুতে মোট সঞ্চিত এরর, সব ধাপের লোকাল এরর জমা হওয়ার ফল।
ব্যবহারিক ফল
h-কে অর্ধেক করলে গ্লোবাল এরর মোটামুটি অর্ধেক হয় — অর্থাৎ দ্বিগুণ নির্ভুলতা পেতে দ্বিগুণ কম্পিউটেশনাল খরচ (দ্বিগুণ ধাপ) লাগে।

৩ · সত্যিকারের যাচাই — ছয়টি step size-এ কম্পিউটেড এরর

L27-এর মতো একই টেস্ট IVP (dy/dx = -y, y(0) = 1, y(x) = e⁻ˣ) ব্যবহার করে, নিচের কোড সেলে h-কে বারবার অর্ধেক করে (0.4 → 0.2 → 0.1 → ...) প্রতিবার চূড়ান্ত বিন্দু (x = 2) এ প্রকৃত এরর গণনা করা হয়েছে, এবং পরপর দুটি এররের অনুপাত প্রিন্ট করা হয়েছে।

Python
import math

def f(x, y):
    return -y

def exact(x):
    return math.exp(-x)

def euler(h, x0=0.0, y0=1.0, xend=2.0):
    x, y = x0, y0
    n = round((xend - x0) / h)
    for i in range(n):
        y = y + h * f(x, y)
        x = x + h
    return y

hs = [0.4, 0.2, 0.1, 0.05, 0.025, 0.0125]
print(f"{'h':>8} | {'y_euler(2)':>12} | {'|error|':>12} | {'ratio prev/curr':>16}")
prev_err = None
for h in hs:
    yf = euler(h)
    err = abs(yf - exact(2.0))
    ratio = (prev_err / err) if prev_err is not None else float('nan')
    ratio_str = f"{ratio:.3f}" if prev_err is not None else "  --  "
    print(f"{h:>8} | {yf:>12.6f} | {err:>12.6f} | {ratio_str:>16}")
    prev_err = err

    
প্রকৃত আউটপুট: h = 0.4-এ এরর ০.০৫৭৫৭৫; h = 0.2-এ কমে ০.০২৭৯৬১ (অনুপাত ২.০৫৯); h = 0.1-এ ০.০১৩৭৫৯ (অনুপাত ২.০৩২); h = 0.05-এ ০.০০৬৮২৩ (অনুপাত ২.০১৬); h = 0.025-এ ০.০০৩৩৯৭ (অনুপাত ২.০০৮); এবং h = 0.0125-এ ০.০০১৬৯৫ (অনুপাত ২.০০৪)। প্রতিবার h অর্ধেক করায় এররের অনুপাত ক্রমশ ঠিক ২.০-এর দিকে এগোচ্ছে — এটাই O(h) প্রথম-ক্রম কনভারজেন্সের সঠিক, পরিমাপযোগ্য স্বাক্ষর। অনুপাতটি ছোট h-এ ২-এর আরও কাছাকাছি যাওয়ার কারণ হলো তত্ত্বীয় O(h) সম্পর্কটি একটি অ্যাসিম্পটোটিক (h → 0 হলে সঠিক) ফলাফল — বড় h-এ উচ্চতর-ক্রম পদগুলোর প্রভাব এখনো কিছুটা থেকে যায়।
মূল কথা · Key takeaway

অয়লার মেথডের গ্লোবাল এরর O(h) — একটি সাধারণ, ব্যবহারিক নিয়ম যা আমরা এখন শুধু তত্ত্ব হিসেবে নয়, বরং সত্যিকারের কম্পিউটেড এররের অনুপাত থেকে সরাসরি দেখেছি। এই "প্রথম-ক্রম" সীমাবদ্ধতাই ব্যাখ্যা করে কেন অয়লার মেথড ব্যবহারিক কাজে খুব কম ব্যবহৃত হয় — একই নির্ভুলতা পেতে হলে অত্যন্ত ছোট h লাগে, যা অনেক বেশি কম্পিউটেশনাল খরচ তৈরি করে। L29-এ আমরা দেখব হয়েনের মেথড (Heun's method) সামান্য বেশি হিসাব দিয়ে O(h²) গ্লোবাল এরর অর্জন করে — অর্থাৎ h অর্ধেক করলে এরর চতুর্থাংশ হয়ে যায়।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ লোকাল ট্রাংকেশন এরর O(h²) হলেও গ্লোবাল এরর কেন O(h²) না হয়ে O(h) হয়ে যায়?

কারণ একক ধাপের এরর O(h²) হলেও, একটি নির্দিষ্ট দূরত্ব কভার করতে ধাপ সংখ্যা h ছোট হলে 1/h অনুপাতে বাড়ে। প্রতিটি ধাপের ছোট এরর যোগ হয়ে মোট গ্লোবাল এরর হয় n × O(h²) = (1/h) × O(h²) = O(h) — অর্থাৎ ধাপ সংখ্যা বাড়ার প্রভাব একটি h "খেয়ে ফেলে", ফলে গ্লোবাল এরর লোকাল এররের চেয়ে এক ক্রম কম নির্ভুল হয়ে যায়।

প্র ০২ উপরের টেবিলে অনুপাত h = 0.4 → 0.2-এ ছিল ২.০৫৯, কিন্তু h = 0.0125 -এ কমে ২.০০৪ হয়েছে — অর্থাৎ ছোট h-এ অনুপাত তত্ত্বীয় মান ২-এর আরও কাছাকাছি। এর কারণ কী হতে পারে?

O(h) সম্পর্কটি একটি অ্যাসিম্পটোটিক ফলাফল — অর্থাৎ এটি ঠিক h → 0 সীমায় সত্য। বাস্তবে গ্লোবাল এরর ঠিক C·h নয়, বরং C·h + D·h² + ...-এর মতো একটি সিরিজ। বড় h-এ উচ্চতর-ক্রম পদগুলো (h², h³) এখনো লক্ষণীয় প্রভাব ফেলে, তাই অনুপাত ঠিক ২ থেকে সামান্য দূরে থাকে। h যত ছোট হয়, সেই উচ্চতর-ক্রম পদগুলো তত দ্রুত ছোট হয়ে যায় (কারণ h² << h ছোট h-তে), তাই অনুপাত ক্রমশ ঠিক তাত্ত্বিক মান ২-এর কাছাকাছি চলে আসে।

প্র ০৩ আপনি চান x = 2-এ এরর বর্তমান h = 0.1-এর এরর (0.0138) থেকে প্রায় ১০ গুণ ছোট হোক। O(h) সম্পর্ক ব্যবহার করে মোটামুটি কত h লাগবে বলে আপনার ধারণা?

যেহেতু এরর প্রায় h-এর সমানুপাতিক, এরর ১০ গুণ কমাতে h-কেও প্রায় ১০ গুণ কমাতে হবে — অর্থাৎ আনুমানিক h ≈ 0.01। এটি সরাসরি টেবিলের ডেটা দিয়ে যাচাইযোগ্য: প্যাটার্ন অনুসরণ করে h = 0.0125-এ এরর ইতিমধ্যে 0.0017-এ নেমে এসেছে, যা প্রায় লক্ষ্য মাত্রার কাছাকাছি — এটাই দেখায় কেন O(h)-সম্পর্ক জানা থাকলে কাঙ্ক্ষিত নির্ভুলতার জন্য প্রয়োজনীয় step size আগে থেকে অনুমান করা যায়।

অনুশীলন

  1. চিন্তা করুন: উপরের কোড সেলে hs তালিকায় আরও ছোট একটি মান 0.00625 যোগ করলে সংশ্লিষ্ট অনুপাত (আগের এরর ভাগ এই এরর) কত হবে বলে আপনার ধারণা — ২-এর আরও কাছাকাছি, নাকি দূরে?

    যেহেতু O(h) সম্পর্কটি অ্যাসিম্পটোটিক, h আরও ছোট হলে অনুপাত ২-এর আরও কাছাকাছি যাওয়ার কথা — সম্ভবত ২.০০২-এর কাছাকাছি কোথাও।

  2. পরীক্ষা করুন: কোড সেলের hs তালিকায় 0.00625 যোগ করে Run চেপে আপনার অনুমান যাচাই করুন।

    h = 0.00625-এ চূড়ান্ত এরর আরও কমে যায়, এবং h = 0.0125-এর এরর (0.001695) এর তুলনায় অনুপাত প্রায় ২.০০২-এর কাছাকাছি হয় — আরও ২-এর কাছাকাছি, ঠিক যেমন অনুমান করা হয়েছিল। এটি নিশ্চিত করে অয়লার মেথডের প্রথম-ক্রম কনভারজেন্স আচরণ h → 0 হলে আরও স্পষ্টভাবে প্রকাশ পায়।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

আগের পাঠ
IVP ও অয়লার মেথড