انتگرال رامبرگ

Romberg Integration
انتگرال-رامبرگ-با-متلب-MATLAB-Romberg-Integration
معرفی

روش رامبرگ (Romberg) یک روش قدرتمند برای محاسبه ی انتگرال های دارای دامنه ی محدود به صورت

int{a}{b}{f(x)dx}

و با اِعمال برونیابی ریچاردسون (Richardson extrapolation) به صورت تکراری بر روی قاعده ی ذوزنقه مورد استفاده قرار می گیرد. این تکرار ها به صورت یک آرایه ی هرمی پیش می روند تا دقیق ترین پاسخ که در قله ی هرم قرار دارد بدست بیاید. روش رامبرگ یکی از روش های فرومولاسیون نیوتن-کاتس است و مقدار تابع انتگرال گیری شونده را در نقاط با فاصله ی مساوی بدست می آرود.

این روش به افتخار ورنر رامبرگ (Werner Romberg) که در سال 1955 این روش را منتشر نمود نامگذاری شده است.

اکنون به بررسی چگونگی محاسبه ی انتگرال در روش رامبرگ می پردازیم. انتگرال قاعده ی ذوزنقه برای تقریب انتگرال تابع f در بازه ی delim{[}{a,b}{]} که به m زیربازه تقسیم شده است به صورت زیر محاسبه می شود:

int{a}{b}{f(x)dx} ~ = ~ {h/2} delim{[}{f(a)+f(b) + 2sum{j=1}{m-1}{f(x_{j})}}{]}

که در آن h = (b-a)/m و x_j = a+jh در j = 0,1,...,m است (مطابق شکل زیر).

انتگرال رامبرگ

فرض کنیم n یک عدد صحیح مثبت است. در اولین گام روش رامبرگ، به محاسبه ی مقادیر تقریب قاعده ی ذوزنقه با m_1=1, m_2=2, m_3=4, ..., m_n=2^{n-1} می پردازیم. اندازه ی گام h_k مرتبط با m_k نیز به صورت h_k=(b-a)/m_k=(b-a)/2^{k-1} محاسبه می گردد. با این توضیح، قاعده ی ذوزنقه به شکل زیر در خواهد آمد:

int{a}{b}{f(x)dx} ~ = ~ {h_k/2} delim{[}{f(a)+f(b) + 2sum{i=1}{2^{k-1} -1}{f(a+ih_k)}}{]}

 اگر رابطه ی فوق را با استفاده از عبارت R_{k,1} بازنویسی کنیم، انتگرال ذوزنقه برای k های مختلف به صورت زیر قابل نوشتن است:

R_{1,1} ~=~ {h_1/2}delim{[}{f(a)+f(b)}{]}

R_{2,1} ~=~ {1/2}delim{[}{R_{1,1}+h_1 f(a+h_2)}{]}

R_{3,1} ~=~ {1/2}delim{[}{R_{2,1}+h_2 (f(a+h_3) + f(a+3h_3))}{]}

تقسیمات انتگرال رامبرگ

 به طور کلی داریم:

R_{k,1} ~=~ {1/2}delim{[}{R_{k-1,1}+h_{k-1}  sum{i=1}{2^{k-2}}{f(a+(2i-1)h_k)}  }{]}

که در آن k=2,3,...,n می باشد.

در گام دوم می توانیم با اعمال برونیابی مقادیر دقیق تر انتگرال محاسبه شده را بیابیم. با استفاده از رابطه ی

R_{k,j} ~=~ R_{k,j-1} + {R_{k,j-1}-R_{k-1,j-1}}/{4^{j-1}-1}

که در آن k=2,3,...,n و j=2,3,...,k می باشند، جدولی به شکل زیر محاسبه می گردد که آخرین عدد محاسبه شده در آن یعنی R_{n,n} دقیق ترین پاسخ حاصل از روش انتگرال گیری رامبرگ را ارائه می دهد.

انتگرال-رامبرگ-با-متلب-MATLAB-Romberg-Integration

    برنامه نویسی با MATLAB

    در اینجا با استفاده از نرم افزار متلب (MATLAB) برنامه ای جهت محاسبه انتگرال تابع به روش رامبرگ ارائه گردیده است. دو کد برای این منظور در یک فایل فشرده ارائه گردیده است:

    1. کد صریح (explicit) که در خروجی روند حل کامل مسئله را نمایش می دهد

    2. کد غیرصریح (معمولی) که تنها پاسخ نهایی را نمایش می دهد

    لازم به ذکر است که برنامه های ارائه شده قادر به حل تمامی مثال های قابل حل با روش انتگرال گیری رامبرگ و دریافت هر تعداد تقسیمات انتگرال گیری مورد نظر کاربران گرامی بوده و به صورت کاملا عمومی (general) کدنویسی شده اند.

    ورودی ها و خروجی ها

    ورودی:

    1. تابع (f(x ورودی جهت انتگرال گیری
    2. دامنه ی پایینی انتگرال گیری a
    3. دامنه ی بالایی انتگرال گیری b
    4. تعداد تقسیمات انتگرال n

    خروجی:

    1. حل کامل مسئله به صورت صریح
    2. تشکیل جدول برونیابی الگوریتم رامبرگ
    3. مقدار نهایی پاسخ انتگرال

    تصاویر اجرای برنامه

    مشاهده ی ورودی و خروجی برنامه در یک مثال نمونه

    مشاهده ی ورودی و خروجی برنامه ی غیر صریح در یک مثال

    این برنامه با نسخه های متلب/MATLAB سال های 2010-2013 تست شده است. در صورت استفاده از نسخه ی سال های دیگر لایبریکا تضمین کننده ی اجرای صحیح برنامه نمی باشد.