حل عددی معادلات دیفرانسیل معمولی
معادلات دیفرانسیل در علوم پایه نظیر ریاضی، فیزیک، شیمی، زیست شناسی و ستاره شناسی و همچنین علوم مهندسی نظیر مکانیک، برق، مواد و مهندسی شیمی کاربردی گسترده و حضوری چشمگیر دارند. معادله دیفرانسیل یک دسته از معادلات ریاضی است که بیانگر رابطه بین یک تابع مجهول از یک یا چند متغیر مستقل و مشتق های مرتبه های مختلف آن نسبت به متغیرهای مستقل است. بسیاری از قوانین عمومی طبیعت(در فیزیک، شیمی، زیست شناسی و ستاره شناسی) طبیعی ترین بیان ریاضی خود را در زبان معادلات دیفرانسیل می یابند.
با توجه به اینکه اغلب معادلات دیفرانسیل که به واقعیت پدیده ها نزدیک هستند، دارای ترم های غیرخطی و پیچیده می باشند و یافتن جواب تحلیلی برای آنها امری دشوار یا غیرممکن است. عدم وجود پاسخ تحلیلی برای این گونه معادلات پیچیده و غیرخطی، منجر به ایجاد و گسترش روش های حل عددی شده است. مهمترین پارامترهای ارزیابی روش های حل عددی، سرعت، دقت و صحت حل معادله است. با توجه به ارتقاء چشمگیر سرعت و ظرفیت پردازش اطلاعات در پردازنده ها و کامپیوترها در اواخر قرن نوزدهم، روشهای حل عددی نیز گسترده تر شدند و همچنان نیز این ارتقاء و گستردگی ادامه دارد.
مسئله
معادله دیفرانسیل مرتبه اول به فرم زیر است.
روش اویلر برای معادلات دیفرانسیل مرتبه اول
سادهترین متد برای حل عددی معادلات دیفرانسیل، روش اویلر است که الان توضیح داده میشود. معادله دیفرانسیل مرتبه اول زیر را در نظر بگیرید:
در زمان t0 شروع میکنیم. مقدار (y(t0+h را میتوان توسط (y(t0 بعلاوه زمان تغییر حالت ضرب در شیب تابع تقریب زد؛ که مشتق (y(t است.
ما این تقریب را (y*(t مینامیم.
بنابرین اگر بتوانیم مقدار dy/dt را در زمان t0 محاسبه کنیم، میتوانیم مقدار تقریبی y در زمان t0+h را حدس بزنیم. سپس این مقدار جدید (y(t0 را استفاده کرده، دوباره dy/dt را حساب و این کار را تکرار میکنیم. به این روش متد اویلر میگویند.
توسط این پیش زمینه ساده روش اویلر برای معادلات دیفرانسیل مرتبه اول به صورت زیر است:
۱) در زمان t۰ شروع کنید، یک مقدار برای h در نظر بگیرید، سپس شرایط ابتدایی (y(t۰ را حساب کنید.
۲) از طریق (y(t0 مشتق (y(t را در زمان t=t0 حسب کنید. آن را k۱ بنامید.
۳) از این مقدار، مقدار تقریبی (y*(t0+h را حساب کنید.
۴) قرار دهید (t0=t0 +h , y(t0)=y*(t0+h
۵) مراحل ۲ تا ۴ را آنقدر تکرار کنید تا جواب به دست آید.
روش اویلر برای معادلات دیفرانسیل مرتبه بالاتر
روشی که در بالا بیان شد برای تقریب معادلات دیفرانسیل مرتبه اول کاربرد داشت، ولی بهطور واضح نمیتوان این جواب را برای معادلات دیفرانسیل مراتب بالاتر قبول کرد. ترفندی که در اینجا بکار میرود، تقسیم کردن آن به معادلات دیفرانسیل مراتب پایینتر است. این روش «آنالیز حالتهای متغیر» نامیده میشد.
روش رونگه‐کوتا مرتبه دوم
بهطور واضح بین درستی و پیچیدگی محاسبات و مقدار انتخاب شده h وابستگی زیادی وجود دارد. بهطور کلی هرچه مقدار h کوچکتر شود، محاسبات طولانیتر ولی دقیق تر میشود.
حال اگر مقدار h خیلی کوچک شود، برای اینکه نمیتوان آن را به درستی در کامپیوتر نشان داد خطا ایجاد میشود. برای سیستمهای مرتبه بالاتر، تقریب اویلر بسیار سخت است. به همین دلیل، دقت بالاتر و تکنیکهای با جزییات بیشتر ساخته شد. ما در مورد متدی بحث میکنیم که توسط دو ریاضیدان به نامهای Runge و Kutta ساخته شدهاست.
این تکنیک برای مشتق تابع (y(t در t۰ از متد اویلر استفاده میکند. از k۱ نیز برای بدست آوردن مقدار اولیه (y(t0+h استفاده میکنیم. از (y*(t0+h میتوانیم مقدار مشتق(y(t را در t0+h حساب کنیم که آن را k۲ مینامیم. سپس میانگین این دو مشتق را k۳ مینامیم.
روش RK۲، تقریب را از طریق تخمین زدن بیشتر این تقریب، از روی فاصله شیب حساب میکند. روش اویلر مشتق را در (y(t0 حساب کرده و از آن در تقریب (y(t0+h استفاده میکند.
به صورت الگوریتم میتوانیم روش RK۲ را استفاده کنیم:
۱) در زمان t0 شروع به محاسبات میکنیم.
۲) در زمان t0، مشتق (y(t را حساب کرده و آن را k۱ مینامیم.
۳) مقدار ابتدایی (y*(t0+h را حساب کرده و فرمول اویلر را استفاده میکنیم.
۴) از (y*(t0+h مشتق (y(t را در t0+h حساب کرده و آن را k۲ مینامیم.
۵) مقدار جدید (y*'(t0+h را از میانگین k۱ وk۲ محاسبه میکنیم.
۶) قرار دهید (y(t0) = y*'(t+0h و t0 = t0+h
۷) مراحل ۲ تا ۶ را تکرار کنید تا جواب بدست آید.
جستارهای وابسته
- شرط کورانت-فردریشز-لهوی
- مدلیکا