بلاگ

انتخاب حلگر معادله دیفرانسیل ODE در متلب

معادلات دیفرانسیل معمولی

یک معادله دیفرانسیل معمولی (ODE) شامل یک یا چند مشتق از یک متغیر وابسته ، y، نسبت به یک متغیر مستقل ، t  است که معمولاً به عنوان زمان نامیده می شود. نمادی که در اینجا برای نشان دادن مشتقات y نسبت به t استفاده می شود ‘y برای مشتق اول “y برای مشتق دوم و غیره است. درجه ODE برابر با مشتق با بالاترین مرتبه y است که در معادله ظاهر می شود.

به عنوان مثال ، معادله ode زیر یک معادله مرتبه دوم است:

“y=9y

در یک مسئله معادله دیفرانسیل با مقدار اولیه ، ODE با شروع از یک حالت اولیه حل می شود. با استفاده از شرط اولیه y0، و همچنین یک دوره زمانی که باید پاسخ آن را بدست آورید ، (t0 , tf)،  حل معادله به صورت تکراری به دست می آید. در هر تکرار ، حل کننده الگوریتم خاصی را برای نتایج مراحل قبلی اعمال می کند. در اولین حلقه تکرار ، با استفاده از شروط اولیه معادله حلگر انتگرالی معادله شروع به حل می نماید. نتیجه حل این معادله در متلب به صورت یک بردار است که نشان می دهد در هر پله زمانی مقدار نتایج چه مقداری دارد.

انواع ODE ها

حلگرهای ODE در متلب، انواع معادلات دیفرانسیل مرتبه اول زیر را می تواند حل نماید:

  • معادلات دیفرانسیل به شکل صریح y’ = f (t , y)
  • معادلات دیفرانسیل به شکل ضمنی M(t , y)y’ = f (t , y) که در آن M (t , y) یک ماتریس جرمی غیر تکینگی ( nonsingular ) است. ماتریس جرم می تواند وابسته به زمان یا حالت باشد ، یا می تواند یک ماتریس ثابت باشد. ODE های خطی ضمنی شامل ترکیبات خطی اولین مشتق y هستند که در ماتریس جرم قرا داده شده اند.
  • ODE های ضمنی خطی همیشه می توانند به صورت صریح y’ = M-1 (t , y)f(t , y) تبدیل شوند. با این حال ، تعیین ماتریس جرم به طور مستقیم در حل کننده ODE از این تغییر جلوگیری می کند ، که ناخوشایند است و از نظر محاسباتی گران است.
  • اگر برخی از اجزای y  مفقود باشند ، معادلات معادلات جبری دیفرانسیل یا DAE نامیده می شوند و سیستم DAE شامل برخی از متغیرهای جبری است. متغیرهای جبری متغیرهای وابسته ای هستند که مشتقات آنها در معادلات نشان داده نمی شود. سیستم DAE ها را می توان با استفاده از مشتقات معادلات برای حذف متغیرهای جبری به عنوان یک سیستم معادل ODE های مرتبه اول بازنویسی کرد. تعداد مشتقات مورد نیاز برای بازنویسی DAE به عنوان ODE ، شاخص دیفرانسیل نامیده می شود. حل کننده های ode15s و ode23t می توانند DAE های index-1 را حل کنند.
  • معادلات دیفرانسیل کاملا ضمنی به فرم f (t , y , y’) = 0 . معادلات دیفرانسیل کاملاً ضمنی را نمی توان به صورت صریح بازنویسی کرد و همچنین ممکن است شامل برخی متغیرهای جبری باشد. حل ode15i برای مشکلات کاملاً ضمنی ، از جمله DAE های index-1 طراحی شده است. می توانید با استفاده از تابع odeset برای ایجاد ساختار گزینه ها ، اطلاعات اضافی را برای حل کننده در اختیار برخی از مشکلات قرار دهید.

سیستم های ODE ها

شما می توانید هر تعداد معادله ODE را برای حل مشخص کنید و در اصل تعداد معادلات فقط با حافظه رایانه موجود محدود می شود. اگر سیستم معادلات دارای n معادله باشد ،

سپس تابعی که معادلات را داخل خود دارد خروجی از یک بردار با n عناصر بر می گرداند.

به برای مثال ، سیستم دیفرانسیلی دو معادله ای زیر را در نظر بگیرید:

در متلب تابعی که این معادلات را در خود قرار می دهد عبارت است از:

function dy = myODE(t,y)
dy(1) = y(2);
dy(2) = y(1)*y(2)-2;


ODE های مرتبه بالاتر

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

نتیجه این جایگزینی ها یک سیستم از معادلات مرتبه اول است.

به عنوان مثال ، ODE مرتبه سوم را در نظر بگیرید.

با استفاده از تعویض های زیر:

منجر به سیستم معادل مرتبه اول زیر می شود.

بنابراین کد این سیستم معادلات در متلب به صورت زیر بازنویسی می شود:

function dydt = f(t,y)
dydt(1) = y(2);
dydt(2) = y(3);
dydt(3) = y(1)*y(3)-1;


انتخاب حل کننده

در اکثر مسائل تابع ode45 به خوبی کار می کند و به طور کلی باید اولین انتخاب کننده حل کننده شما باشد. با این حال ، ode23 و ode113 می توانند در مقایسه با ode45 کارآمدتر باشند زیرا در بعضی مسائل حل دقیق تری نیاز است.

برخی از مشکلات ODE شامل stiffness یا مشکل در ارزیابی را نشان می دهند. Stiffness زمانی ایجاد می شود که در مقیاس بندی در جایی از مسئله تفاوت وجود داشته باشد. به عنوان مثال ، اگر یک ODE دارای دو جزء راه حل باشد که در مقیاس های زمانی بسیار متفاوت است ، ممکن است معادله stiffness باشد. اگر حل کننده های غیر stiffness (مانند ode45) نتوانند مشکل را حل کنند یا بسیار کند هستند ، می توانید یک مشکل را سخت تشخیص دهید. اگر مشاهده می کنید که یک حل کننده غیر stiffness بسیار کند است ، به جای آن از حل کننده stiffness مانند ode15s استفاده کنید. هنگام استفاده از حل کننده stiffness ، می توانید با ارائه ماتریس Jacobian ، قابلیت اطمینان و کارایی را افزایش دهید.

در جدول زیر دستورالعمل های کلی در مورد انتخاب حلگر ode متلب ارائه می دهد.

اشتراک گذاری:

مطالب زیر را حتما مطالعه کنید

دیدگاهتان را بنویسید