انتگرال سیمپسون

Simpson's Integration
انتگرال سیمپسون - Simpson Integration with MATLAB
معرفی

قاعده ی سیمپسون (Simpson’s rule) یکی از فرمول های نیوتن کاتس (Newton-Cotes) برای تقریب انتگرال یک تابع با استفاده از چندجمله ای های درجه دو است. قاعده ی سیسمپسون را می توان با انتگرال گیری از یک چندجمله ای لاگرانژ مرتبه سه که از سه نقطه ی متوالی و با فاصله ی یکسان روی تابع عبور کرده است استخراج نمود. فرض می کنیم این نقاط به صورت x_0, x_1, x_2 نامگذاری شده باشند، فاصله ی میان آن ها h و f_n=f(x_n) در نظر گرفته شده باشد. بنابراین قاعده ی سیمپسون بیان می کند که:

int{x_0}{x_2}{f(x)dx} ~ = int{x_0}{x_0 + 2h}{f(x)dx} ~~ approx ~~ {1/3}h(f_0+4f_1+f_2)

از آنجا که در قاعده ی سیسمپسون از چندجمله ای های درجه دو برای تقریب تابع استفاده می شود، قاعده ی سیمپسون در محاسبه ی انتگرال توابع چندجمله ای از حداکثر درجه ی سه پاسخ دقیق ارائه می دهد. همچنین دقت این روش نسبت به قاعده ی ذوزنقه در محاسبه ی انتگرال توابع عمومی غیر چندجمله ای به مراتب بیشتر است.

بطور مثال، تابع f(x)=sin(x) را در بازه ی delim{[}{0,pi/2}{]} در نظر بگیرید (منحنی سیاه رنگ در تصویر زیر)، که در آن f(x_0=0)=0، f(x_1=pi/4)=1/sqrt{2} و f(x_2=pi/2)=1.

مثال قاعده سیمپسون

بنابراین از قاعده ی سیمپسون (که مساحت زیر منحنی آبی رنگ در تصویر زیر را بدست می دهد) داریم:

int{0}{pi/2}{sin(x)dx} ~~ approx ~~ {1/3}(1/4{pi})(0 + 4/sqrt{2} + 1) ~~ approx ~~ 1.00228

در صورتی که با استفاده از قاعده ی ذوزنقه (مساحت زیر منحنی قرمز) مقدار pi/4 = 0.785398 را ارائه می دهد و پاسخ دقیق مسئله نیز مقدار 1 است.

با تقسیم بازه ی انتگرال گیری delim{[}{a,b}{]} به زیربازه های کوچکتر دقت انتگرال عددی افزایش می یابد. با فرض اینکه زیر بازه ها دارای طول مساوی h={b-a}/n است، که در آن n تعداد تقسیمات بازه است، مقدار انتگرال تابع با استفاده از رابطه ی زیر قابل محاسبه است:

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

به این رابطه انتگرال مرکب (Composite) و یا کابرد چندگانه (multiple-application) سیمپسون می گویند.

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

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

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

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

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

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

    ورودی:

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

    خروجی:

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

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

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

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

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