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

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

معادلات دیفرانسیل دسته‌های گوناگونی دارند که دسته‌های بسیار خاصی از آن بطور تحلیلی و دقیق قابل حل هستند. در اكثر مواقع، برای حل یك معادله دیفرانسیل با فرم بسیار ساده، روش‌های تحلیلی پیچیده و پرهزینه‌اي وجود دارد. از اینروست که روش‌های حل عددی مثل بسیاری از شاخه‌های ریاضی، تبدیل به روش‌هایی کارآمد در عرصه ی معادلات دیفرانسیل شده‌اند. روش‌هاي عددي براي حل معادلات ديفرانسيلي معمولي، به روش‌هايي گفته مي‌شود كه براي يافتن جواب تقريبي معادله، استفاده مي‌شود.

معادلات دیفرانسیل معمولي در بسياري از زمينه‌هاي علمي كاربرد دارند كه مي‌توان به فيزيك، شيمي، بيولوژي و اقتصاد، اشاره نمود. علاوه بر اين، برخي از روش‌هايي كه براي حل معادلات ديفرانسيل جزيي به كار برده مي‌شود، ابتدا معادله مد نظر را به معادله ديفرانسيل معمولي تبديل كرده و سپس روش‌هاي موجود براي حل اين دسته از مسايل را به كار مي‌گيرند.


مساله[ویرایش]

معادله ديفرانسيل مرتبه اول به فرم زير مي‌باشد.

y'(t) = f(t,y(t)), \qquad y(t_0)=y_0, \qquad\qquad (1)


روش اویلر برای معادلات دیفرانسیل مرتبه اول[ویرایش]

ساده‌ترین متد برای حل عددی معادلات دیفرانسیل، روش اویلر است که الان توضیح داده می‌شود. معادله دیفرانسیل مرتبه اول زیر را در نظر بگیرید :

در زمان t۰ شروع می‌کنیم. مقدار (y(t۰+h را می‌توان توسط (y(t۰ بعلاوه زمان تغییر حالت ضرب در شیب تابع تقریب زد. که مشتق (y(t است.

ما این تقریب را (y*(t می‌نامیم.

بنابرین اگر بتوانیم مقدار dy/dt را در زمان t۰ محاسبه کنیم، می‌توانیم مقدار تقریبی y در زمان t۰+h را حدس بزنیم. سپس این مقدار جدید (y(t۰ را استفاده کرده، دوباره dy/dt را حساب و این کار را تکرار می‌کنیم. به این روش متد اویلر می‌گویند.

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

۱) در زمان t۰ شروع کنید، یک مقدار برای h در نظر بگیرید، سپس شرایط ابتدایی (y(t۰ را حساب کنید.

۲) از طریق (y(t۰ مشتق (y(t را در زمان t=t۰ حسب کنید. آنرا k۱ بنامید. این شیب توسط خط قرمز در شکل بالا نشان داده شده‌است.

۳) از این مقدار، مقدار تقریبی (y*(t۰+h را حساب کنید.

۴) قرار دهید (t۰=t۰+h،y(t۰)=y*(t۰+h

۵) مراحل ۲ تا ۴ را آنقدر تکرار کنید تا جواب به دست آید.

روش اویلر برای معادلات دیفرانسیل مرتبه بالاتر[ویرایش]

روشی که در بالا بیان شد برای تقریب معادلات دیفرانسیل مرتبه اول کاربرد داشت، ولی بطور واضح نمی‌توان این جواب را برای معادلات دیفرانسیل مراتب بالاتر قبول کرد. ترفندی که در اینجا بکار می‌رود، تقسیم کردن آن به معادلات دیفرانسیل مراتب پایین تر است. این روش «آنالیز حالت‌های متغیر» نامیده می‌شد.

روش Runge – kutta مرتبه دوم[ویرایش]

بطور واضح بین درستی و پیچیدگی محاسبات و مقدار انتخاب شده h وابستگی زیادی وجود دارد. بطور کلی هرچه مقدار h کوچک‌تر شود، محاسبات طولانی تر ولی دقیق تر می‌شود. حال اگر مقدار h خیلی کوچک شود، برای اینکه نمی‌توان آنرا به درستی در کامپیوتر نشان داد خطا ایجاد می‌شود. برای سیستم‌های مرتبه بالاتر، تقریب اویلر بسیار سخت است. به همین دلیل، دقت بالاتر و تکنیک‌های با جزییات بیشتر ساخته شد. ما در مورد متدی بحث می‌کنیم که توسط دو ریاضیدان به اسمهای Runge و Kutta ساخته شده‌است.

این تکنیک برای مشتق تابع (y(t در t۰ از متد اویلر استفاده می‌کند. از k۱ نیز برای بدست آوردن مقدار اولیه (y(t۰+h استفاده می‌کنیم. از (y*(t۰+h می‌توانیم مقدار مشتق(y(t را در t۰+h حساب کنیم که آنرا k۲ می‌نامیم. سپس میانگین این دو مشتق را k۳ می‌نامیم.

روش RK۲، تقریب را از طریق تخمین زدن بیشتر این تقریب، از روی فاصله شیب حساب می‌کند. روش اویلر مشتق را در (y(t۰ حساب کرده و از آن در تقریب (y(t۰+h استفاده می‌کند.

بصورت الگوریتم می‌توانیم روش RK۲ را استفاده کنیم :

۱) در زمان t۰ شروع به محاسبات می‌کنیم.

۲) در زمان t۰، مشتق (y(t را حساب کرده و آنرا k۱ می‌نامیم.

۳) مقدار ابتدایی (y*(t۰+h را حساب کرده و فرمول اویلر را استفاده می‌کنیم.

۴) از (y*(t۰+h مشتق (y(t را در t۰+h حساب کرده و آنرا k۲ می‌نامیم.

۵) مقدار جدید (y*'(t۰+h را از میانگین k۱ وk۲ محاسبه می‌کنیم.

۶) قرار دهید (y(t۰) = y*'(t+۰h و t۰ = t۰+h

۷) مراحل ۲ تا ۶ را تکرار کنید تا جواب بدست آید.

پیوند به بیرون[ویرایش]

[1] M. Rahmanzadeh, L.Cai, R.E. White; Computers and Chemical Engineering 58 (2013) 33–39