روش مایلن

Milne’s Method
روش مایلن سیمپسون با متلب
معرفی

در برخی از روش های حل معادلات دیفرانسیل معمولی (ODE)  به شکل

dy/dx = f(x,y)

برای بدست آوردن پاسخ در گام بعدی y_{i+1} از پاسخ مسئله در چند گام قبل جهت کاهش خطای حل استفاده می کنند.  یکی از روش های انتگرال گیری از این معادلات استفاده از فرمول های انتگرال گیری نیوتن-کاتس (Newton-Cotes) است که به صورت گسترده در الگوریتم های عددی مورد استفاده قرار می گیرند. این روش ها به دو دسته ی صریح یا باز (Explicit or Open) و ضمنی یا بسته (Implicit or Closed) طبقه بندی می شوند. در روش های صریح (یا باز) مقدار y_{i+1} به مقدار تابع در همان گام f(x_{i+1},y_{i+1}) وابسته نیست و در روش های ضمنی (یا بسته) این وابستگی در روابط وجود دارد.

روش مایلن (Milne’s Method) یکی از محبوب ترین روش ها بر مبنای روابط انتگرال گیری نیوتن-کاتس است. در این روش از فرمول سه نقطه ای نیوتن کاتس صریح (یا باز) به عنوان پیشگو (predictor) برای حدس مقدار تابع در گام بعد استفاده می گردد:

{y^0}_{i+1}=y_{i-3} + {4h/3} delim{[}{2f(x_i,y_i)-f(x_{i-1},y_{i-1})+2f(x_{i-2},y_{i-2})}{]}

سپس از فرمول سه نقطه ای نیوتن کاتس بسته (یا ضمنی) که در واقع همان رابطه ی انتگرال گیری سیمپسون است به عنوان تصحیح کننده ی پاسخ حاصل از رابطه ی قبل استفاده می گردد:

{y^1}_{i+1}=y_{i-3} + {h/3} delim{[}{f(x_{i-1},y_{i-1})+4f(x_{i},y_{i})+f(x_{i+1},y_{i+1})}{]}

در حل مسائل با استفاده از روش مایلن-سیمپسون ابتدا با استفاده از رابطه ی پیشگو مقدار اولیه ای برای پاسخ مسئله در گام y_{i+1} محاسبه می شود و سپس این پاسخ در گام بعد در رابطه ی تصحیح کننده ی سیمپسون مورد استفاده قرار گرفته و پاسخ دقیقتری حاصل می شود. همچنین برای بدست آوردن پاسخ در سه نقطه ی ابتدایی بازه یعنی y_1,y_2,y_3 جهت استفاده در رابطه ی مایلن، از روش های تک گام مانند رانگ-کوتا که تنها به یک مقدار اولیه y_0  جهت ارائه ی پاسخ در گام های بعدی نیاز دارند استفاده می گردد.

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

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

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

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

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

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

    ورودی:

    1. تابع (f(x,y ورودی
    2. نقطه ی ابتدایی بازه ی حل
    3. نقطه ی انتهایی بازه ی حل
    4. مقدار اولیه ی تابع y در نقطه ی ابتدایی بازه ی حل
    5. تعداد گام های حل n

    خروجی:

    1. محاسبه و نمایش طول گام حل h
    2. نمایش روند حل به صورت کامل در هر گام
    3. نمایش جدول مقادیر تابع حاصل از حل به روش اولر
    4. رسم نمودار حاصل از حل

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

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

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

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

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