حل معادله دیفرانسیل در متلب به روش تفاضل محدود
در این مقاله به حل معادله دیفرانسیل در متلب به روش تفاضل محدود خواهیم پرداخت. ابتدا به معرفی این روش و قراردادها و کلیات روش پرداخته و سپس با حل دو مثال در متلب موضوع را تکمیل میکنیم. بسیاری از پدیدهها در طبیعت همچون انتقال حرار به کمک معادلات دیفرانسیل بیان میشود. اما گاهی اوقات بعلت پیچیدگی (همچون غیرخطی، ناهمگنی و …) حل این نوع از معادلات به روش تحلیلی سخت و یا غیرممکن است. به همین جهت روشهای عددی حل معادله دیفرانسیل پدید آمده است. قبل از شروع آموزش شما میتوانید کدهای حل انواع مسائل انتقال حرارت در متلب به همراه الگوریتم و فایل توضیحات را از صفحه « حل معادله حرارت در متلب » دانلود نمایید.
معرفی روش تفاضل محدود
روش تفاضل محدود (Finite Difference Method) یک روش عددی برای حل تقریبی معادلات دیفرانسیل بوده که در این روش مشتقات توابع با تفاضل توابع به روشهای مختلف و با خطای مشخص تقریب زده میشود.
در این روشها عملا یک معادله دیفرانسیل به معادله جبری تبدیل شده که حل آن راحتتر میباشد. این روش به اختصار FDM نامیده میشود.
قراردادهای روش تفاضل محدود
برای حل معادله دیفرانسیل به روش تفاضل محدود باید قراردادهایی برای اندیس گذاری مشخص کنیم که برای مکان و زمان این قرادادها متفاوت بوده و در ادامه بیان میشود.
قرارداد زمانی
در روش تفاضل محدود برای مشخص کردن تغییرات زمانی و کار با اندیس زمان قراردادهایی بصورت زیر خواهیم داشت:
Fn: مقدار متغیر F را در زمان n مشخص میکند.( اندیس بالا بصورت توان)
Δt=tn+1-tn گام زمانی حل را مشخص میکند که معمولا در روند حل مقدار آن ثابت در نظر گرفته میشود.
زمان حال (الان) را با n نمایش میدهیم.
برای نمایش زمان قبل از n-1 ، n-2 و … استفاده میشود.
برای نمایش زمانهای بعدی از n+1 ، n+2 و … استفاده میشود.
همچنین برای مشخص کردن یک زمان مشخص t از t=n Δt استفاده میکنیم.
قراردادهای مکانی
برای مشخص کردن تغییرات مکانی قراردادهای زیر را خواهیم داشت:
اندیس پایین i، j و k به ترتیب برای جهات مختلف x ، y و z به کار میرود. (xi)
گام مکانی به عنوان مثال برای جهت x بصورت Δxi=xi-xi-1 که اگر گام مکانی را ثابت فرض کنیم آن را با Δx نشان میدهیم.
اگر گام مکانی ثابت باشد برای مشخص کردن یک مکان مشخص x بصورت Δx xi=i عمل میکنیم.
برای راستای y و z نیز مانند راستای x ، Δy و Δz را خواهیم داشت.
گسستهسازی مشتقات برای حل معادله دیفرانسیل در متلب
برای حل معادله دیفرانسیل به روش تفاضل محدود همانطور که گفته شد مشتقات زمانی و مکانی باید گسستهسازی شوند تا به معادله جبری تبدیل شوند. برای گسستهسازی مشتقات از دو روش بسط تیلور و درونیابی به وسیله چند جملهای استفاده خواهیم کرد.
گسسته سازی مشتقات بوسیله سری تیلور
سری تیلور برای تابع(f(x در همسایگی نقطه x0 بصورت زیر تعریف میشود:
اگر در رابطه بالا جمله مشتق اول را به سمت راست و f(x) را به سمت چپ منتقل کرده و طرفین را بر x-x0 تقسیم کنیم مشتق مرتبه اول تابع بصورت زیر تخمین زده میشود:
اگر همه جملات بسط تیلور نوشته شوند قطعا حاصل دقیق خواهد بود که چون اینکار را انجام نخواهیم داد این تقریب دارای خطایی است که اصطلاحا به آن Truncation error گفته میشود. در ادامه درباره مرتبه این خطا صحبت خواهیم کرد.
در رابطه بالا به نسبت مقادیری که برای x و x0 انتخاب خواهیم کرد نوع روش عددی فرق خواهد کرد.
روشهای متداول گسستهسازی مشتق مرتبه اول برای حل معادله دیفرانسیل در متلب به روش تفاضل محدود
1- روش Forward از نقطه بعدی و همان نقطه برای تقریب مشتق استفاده میشود.
2- روش Backward در این روش از نقطه قبلی و همان نقطه برای تقریب مشتق استفاده میشود
3- روش Central در این روش از نقطه قبلی و بعدی برای تقریب مشتق استفاده میشود.
برای فهم بیشتر این سه روش حتما شکل زیر مشاهده کنید:
برای رسیدن به دقت بالاتر نیز میتوانیم جملات بعدی بسط تیلور استفاده نماییم که البته در عمل بیشتر از همین تقریبها استفاده میشود.
اگر میخواهید حل انواع معادلات دیفرانسیل با متلب به روشهای مختلف را داشته باشید، حتما از طریق لینک « پروژه آماده متلب رایگان » به صفحه پروژههای آماده متلب گام98 سر بزنید.
حل معادله دیفرانسیل در متلب به روش تفاضل محدود : خطای روش تفاضل محدود
روش تفاضل محدود به دلیل تقریب مشتقات تابع در نقطه موردنظر همواره دارای خطایی است که بصورت زیر بیان میکنیم:
PDE=FDM+τ
جملهی [τ=O[(Δx)^m مرتبه خطای روش تفاضل محدود را بیان میکند.
نکات:
1-خطای گسستهسازی برای همه متغیرها یکسان نیست و ممکن به عنوان مثال برای یک متغیر 1 و برای دیگری 2 باشد که بصورت زیر نشان میدهیم.
τ=O[(Δx)2+ Δy]
2-میزان خطای روش عددی به ماهیت تابع تقریب زده شده بستگی دارد زیرا که بسط تیلور برای توابع پیوسته و با تغییرات نرم کاربرد دارد.
3-معمولا روشهای مرتبه بالاتر خطای کمتری دارند زیرا با کوچک شدن گام مکانی مقدار خطا با سرعت بیشتری کاهش میباشد.
4-در حل معادله دیفرانسیل در متلب معمولا خطای گسستهسازی مکانی از خطای گسستهسازی زمانی بیشتر است زیرا معمولا توابع تغییرات آرامی در زمان دارند اما در مکان تغییرات بیشتری دارند.
تقریب مشتق مرتبه دوم
برای حل معادله دیفرانسیل در مواقعی که مشتق مرتبه دوم داریم لازم است آن را گسستهسازی کنیم. با دوبار نوشتن بسط تیلور برای نقطه قبل و بعد بصورت زیر خواهیم داشت:
با جمع کردن دو رابطه مشتق اول حذف میشود و خواهیم داشت:
با جابهجایی جملات، مشتق مرتبه دوم با خطای مرتبه 2 بصورت زیر محاسبه میشود:
این گسستهسازی مشتق دوم را گسستهسازی مرکزی میگویند که شما میتوانید با استفاده از همین بسط تیلور و ترکیب جملات دیگر انواع گسستهسازیهای مرتبه بالاتر را ایجاد نمایید.
درونیابی بوسیله چندجملهای
در این روش فرض میشود جواب یک معادله دیفرانسیل به صورت یک چندجملهای قابل بیان است به طوری که مقادیر در نقاط گسستهسازی دقیق باشند.
با تقریب زدن چندجملهای میتوان مشتقات آن را حساب کرد.
اگر به عنوان مثال از چندجملهای مرتبه دوم برای تقریب استفاده کنیم ، حداکثر میتوانیم برای تقریب مشتق مرتبه دوم از آن استفاده کنیم و مشتق مراتب بالاتر آن صفر خواهد شد.
برای کارهای معمولی معمولا چندجملهای درجه دوم مناسب است.
مثال اول : حل معادله دیفرانسیل مرتبه اول در متلب به روش تفاضل محدود
معادله دیفرانسیل مرتبه اول زیر را با شرط مرزی داده شده در نظر بگیرید:
حل دقیق این معادله با حل معادله مشخصه و بدست آوردن ضریب آن بصورت زیر بدست میآید:
میخواهیم جواب عددی را بدست آورده و دربازه 0 تا 5 ترسیم کنیم. چون نقطه صفر را داریم برای بدست آوردن نقاط بعدی از روش گسستهسازی Forward استفاده میکنیم. اگر در بازه کوچکتر از صفر جواب را میخواستیم از روش Backward استفاده میکردیم.
برای حل معادله دیفرانسیل در متلب گسسته سازی را بصورت زیر انجام میدهیم:
جواب نقطه بعدی را با جابهجایی رابطه فوق بصورت زیر بدست میآوریم:
با استفاده از جوابهای قبلی جوابهای جدید را بدست آورده و این حل را در متلب نوشته و با حل دقیق گفته شده مقایسه میکنیم. برای حل معادله دیفرانسیل در متلب به روش تفاضل محدود ابتدا گام مکانی را 0.2 در نظر میگیریم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
dx=0.2; x=0:dx:5; ye=(-2.5)*exp(-2*x)+1.5; plot(x,ye,'g','linewidth',2) hold on yn(1)=-1; for i=1:length(x)-1 yn(i+1)=yn(i)+dx*(3-2*yn(i)); end plot(x,yn,'r','linewidth',2) title('comparison between FDM and Exact Solution',... 'fontsi',15,'interpreter','latex') xlabel('x','fontsi',15,'interpreter','latex') legend('Exact Solution','FDM Solution') hold off; |
همانطور که مشاهده میکنید جواب عددی با تقریب خوبی به جواب عددی نزدیک است. برای بدست آوردن جواب دقیقتر روش تفاضل محدود گام مکانی را 0.01 قرار میدهیم و جوابها را مجددا مقایسه میکنیم:
همانطور که مشاهده میکنید با کوچکتر کردن گام مکانی جواب تفاضل محدود برروی جواب دقیق قرار گرفت.
همچنین اگر در ترسیم نمودار در متلب دچار مشکل هستید یا میخواهید با زیردستوارت آن به طور کامل آشنا شوید حتما به صفحه رسم نمودار با متلب سر بزنید.
مثال دوم : حل معادله دیفرانسیل مرتبه دوم در متلب
معادله دیفرانسیل مرتبه دوم زیر را با توجه به شرایط آن در بازه صفر تا یک حل نمایید.
معادله ای که برای شما در این بخش در نظر گرفتیم معادله جالبی میباشد و قسمت جالب آن نیز بخش شرایط اولیه میباشد که به جای آن که در ابتدای مرز باشد، در انتهای مرز میباشد. به همین دلیل برای حل عددی باید از انتها شروع به حل نماییم. گسستهسازی زیر را برای این معادله با توجه به نکات گفت شده در بخشهای قبل انجام میدهیم.
خب همانطور که گفتیم چون مقدار اولیه را در نقطه یک داریم و میخواهیم روی بازه صفر تا یک معادله را حل نماییم؛ به همین دلیل باید حل را بصورت برگشتی انجام دهیم و با داشتن دو نقطه در جلو، نقطهی قبلی را بدست آوریم.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
dx=0.01; x=0:dx:1; u=zeros(size(x)); u(end)=2; u(end-1)=1.99; for i=length(x)-1:-1:2 u(i-1) = (dx-1)*u(i+1) + (-3*dx^2-dx+2)*u(i) + (1+3*sqrt(i*dx))*dx^2 ; end plot(x,u,'d','Color',[0,0.7,0.9],'linewidth',2) ylabel('U','fontsi',20,'interpreter','latex') xlabel('x','fontsi',20,'interpreter','latex') text(0.5,2/3*max((max(u)),1),['Delta_x=' num2str(dx)]) title('FDM Solution','fontsi',20,'interpreter','latex') |
در پایان امیدوارم بتوانید انواع معادلات دیفرانسیل را با کمک روش تقاضل محدود با مرور نکات گفته شده به راحتی حل نمایید. همچنین به شما توصیه میکنیم برای مشاهده سایر مقالات و ویدئوهای آموزشی گام98 به صفحه « آموزش matlab » مراجعه نمایید.
این مقاله آموزشی به کوشش تیم تولید محتوای علمی و نرمافزاری گام98 در راستای ارتقای دانش شما در استفاده از نرمافزار متلب تولید شده است. درصورتی مفید بودن این مقاله آن را به دوستان و آشنایان خود معرفی نمایید.
مطالب زیر را حتما مطالعه کنید
کار با بردارها در متلب
آموزش کامل انواع دستورات توزیعهای آماری در متلب
در این مقاله قصد داریم انواع دستورات مهم توزیع های آماری در متلب را به همراه رسم انواع توزیعها و برازش با استفاده از توزیع های آماری بیان نماییم.
آموزش صفر تا 100 تحلیل المان میله به روش اجزا محدود
در ادامه دومین سری از آموزشهای روش المان محدود در این مقاله تحلیل المان میله به روش اجزا محدود را همراه با مثال به طور صفر تا صدی آموزش خواهیم داد.
آموزش جامع و کامل تحلیل المان فنر به روش اجزا محدود
در اولین مجموعه از مقالات آموزشی روش اجزا محدود، آموزش جامع و کامل تحلیل المان فنر به روش المان محدود را همراه با مثال برای شما عزیزان بیان خواهیم کرد.
روش اجزا محدود – Finite Element Method
روش اجزا محدود یک روش عددی برای حل مسائل مهندسی و فیزیکی میباشد. در این مقاله به طورکلی با کاربرد، تاریخچه و مراحل حل این روش آشنا خواهیم شد.
آموزش جامع انواع دستورات توزیع نرمال در متلب
در این مقاله انواع دستورات توزیع نرمال در متلب را به شما آموزش میدهیم.همچنین نحوه کار با توزیع های نرمال تک متغیره و چند متغیره را با جزئیات خواهید آموخت.
2 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام ميشه گسسته سازي معادله دوم رو كامنت كنيد
با سلام و احترام، بله حتما امروز قرار داده میشه