حل معادلات PDE در متلب
به نام خدا و سلام.
به جلسه چهل ام از سری جلسات آموزش متلب خوش آمدید. آموزش نرم افزار متلب از وبسایت متلبپلاس بصورت تخصصی ارائه میشود. در این جلسه به آموزش حل معادله pde در متلب میپردازیم. منظور از معادله pde، معادله دیفرانسیل با مشتقات جزئی (Partial Differential Equation) است. ابتدا با انواع معادله pde آشنا میشویم و سپس روش حل در متلب ارائه میشود. در انتها نیز ابزار گرافیکی pde tool متلب که برای حل معادله pde مناسب است معرفی خواهد شد.
با متلب پلاس همراه باشید.
در یک معادله دیفرانسیل معمولی مشتقات برحسب یک متغیر مستقل (مانند x یا t) میباشند. اما در معادله دیفرانسیل pde (یا مشتقات جزئی) مشتق برحسب دو یا چند متغیر مستقل وجود دارد. به عبارت دیگر، بیش از یک متغیر مستقل داریم. معادله pde میتواند خطی یا غیرخطی باشد. همچنین میتواند در سیستم مختصات کارتزین، استوانهای یا کروی بیان شود. معمولا معادله دیفرانسیل pde دارای حل تحلیلی نیست. مگر در شرایط خاص و حلهایی که به صورت سری باشد. به همین دلیل بهترین روش برای حل pde، حل به روش عددی است (مانند روش تفاضل محدود).
مهمترین مشکل در حل معادلات pde، غیرخطی بودن آنهاست. نکتهای که باید توجه کرد این است که نمیتوان یک راه حل برای همهی معادلات pde ارائه کرد. بسته به نوع مسئله و شدت غیرخطی بودن آن، روش و الگوریتم متفاوت است.
انواع معادله pde
در یک دسته بندی رایج، معادلات pde به 3 دسته تقسیم بندی میشوند. معادلهی بیضوی (بیضی گون)، سهموی (سهمیگون) و هذلولی (هایپربولیک). برای درک بهتر این دسته بندی، یک معادله pde مرتبه دوم خطی با دو متغیر مستقل را درنظر میگیریم.
در معادله بالا، A تا G توابعی برحسب x و y هستند. حال برای نوشتار سادهتر، آن را بصورت زیر مینویسیم.
حال براساس مقدار دلتا میتوان تقسیم بندی را انجام داد. اگر دلتا بزرگتر از صفر باشد، pde از نوع هایپربولیک (هذلولی) است. دلتای صفر مربوط به معادله سهموی و دلتای کوچکتر از صفر مربوط به معادله بیضوی میباشد. از نظر فیزیکی این معادلات به ترتیب نشان دهنده انتشار موج، انتشار وابسته به زمان، و فرآیندهای حالت تعادل هستند. بنابراین، معادلات هذلولی، انتقال برخی از کمیتهای فیزیکی، مانند سیالات یا امواج را مدلسازی میکنند. معادلات سهموی پدیدههای تکاملی را توصیف میکنند که منجر به حالت ثابتی میشوند که توسط یک معادله بیضوی توصیف میشود. و معادلات بیضوی مربوط به حالت خاصی از یک سیستم است (حداقل انرژی).
توجه کنید که این نامگذاری مربوط به یک نقطه است. ممکن است یک معادله در یک نقطه، مثلا بیضوی باشد و در نقطهی دیگر، سهموی.
در نرم افزار متلب برای حل معادله pde حلگر pdepe وجود دارد. این دستور برای حل معادلات pde از نوع سهموی و بیضوی کاربرد دارد. علاوه بر این، تولباکس pde modeler یا (pde toolbox) نیز در متلب وجود دارد که انواع معادلات pde را حل میکند. در ادامهی آموزش متلب، به این موارد میپردازیم.
دستور pdepe در متلب
دستور pdepe برای حل معادله pde در متلب بکار میرود. این دستور میتواند معادلات دیفرانسیل با مشتق جزئی (pde) از نوع سهموی و بیضوی را حل کند. فرم کلی معادلات pde قابل حل با این دستور بصورت زیر است.
طرز فراخوانی و استفاده از دستور pdepe در زیر ارائه شده.
در این نوشتار، معادله pde، شرایط اولیه و شرایط مرزی بایستی به صورت تابع یا function handle (فانکشن هندل) باشند. آموزش کامل تعریف و فراخوانی تابع و فانکشن هندل در جلسه تعریف تابع در متلب ارائه شده. برای مشاهده روی عبارت قرمز رنگ کلیک نمائید.
برای درک بهتر، به مثالهای زیر دقت نمائید.
حل معادله pde در متلب با دستور pdepe
معادله دیفرانسیل pde زیر را درنظر بگیرید.
برای بیان معادله pde، شرایط اولیه و شرایط مرزی نیاز به تعریف 3 تابع داریم. این توابع میتوانند بصورت معمولی در یک m فایل ذخیره و فراخوانی شوند. همچنین میتوانند درون خود کدنویسی بصورت تابع درونی (Local Function) در انتهای کد نوشته شوند. ما در اینجا از روش دوم یعنی تابع درونی استفاده میکنیم. کدنویسی این مسئله به صورت زیر خواهد بود:
clc,clear
m = 0;
x = linspace(0,1,30);
t = linspace(0,2,5);
sol = pdepe(m,@pdex1pde,@pdex1ic,@pdex1bc,x,t);
% local function 1
function [c,f,s] = pdex1pde(x,t,u,DuDx)
c = pi^2;
f = DuDx;
s = 0;
end
% local function 2
function u0 = pdex1ic(x)
u0 = sin(pi*x);
end
% local function 3
function [pl,ql,pr,qr] = pdex1bc(xl,ul,xr,ur,t)
pl = ul;
ql = 0;
pr = pi * exp(-t);
qr = 1;
end
به کد بالا دقت کنید. با توجه به اینکه توابع را به صورت درونی تعریف کریم، با @ فراخوانی میکنیم. اگر به صورت فانکشن هندل (با @) تعریف شده بود، نیازی به @ هنگام فراخوانی نبود. پس از اجرای کد بالا، مسئله حل میشود. حال برای درک بهتر، پاسخ را رسم میکنیم.
u = sol;
surf(x,t,u)
title('Numerical solution computed with 30 mesh points.')
xlabel('Distance x')
ylabel('Time t')
figure
plot(x,u(end,:))
title('Solution at t = 2')
xlabel('Distance x')
ylabel('u(x,2)')
پس از اجرا، داریم:
نمودار سه بعدی جابجایی u را برحسب زمان و مکان نشان میدهند. نمودار دو بعدی مربوط به جابجایی u نسبت به x در ثانیه 2 است.
به این ترتیب حل معادله pde در متلب با دستور pdepe انجام میشود. کافیست معادله، شرایط مرزی و ابتدایی و مش بندی را به این دستور وارد کنیم.
حال به آموزش تولباکس حل معادلات pde در متلب میپردازیم.
تولباکس pde tool متلب (یا pde modeler)
همانطور که در بخش قبل ذکر شد، دستور pdepe دارای محدودیتهایی برای حل معادلات pde بود. محدودیتهایی مثل عدم توانایی حل معادلات pde هذلولی و یا محدودیت بعد مکانی. این مشکلات با استفاده از ابزار حل pde متلب یعنی PDE Toolbox برطرف میشوند. به عبارت دیگر، تولباکس حل pde متلب، معادلات هذلولوی، سهموی، بیضوی و Eigenmodes را حل میکند.
برای باز کردن تولباکس pde میتوان دستور pdetool را در پنجره فرمان اجرا کرد. همچنین این ابزار از طریق سربرگ APPS (مطابق شکل زیر) نیز قابل دسترسی است.
پس از بازکردن این تولباکس با تصویر زیر مواجه میشویم.
برای درک بهتر نحوه حل معادله pde با ابزار حلگر pde متلب، به مثالهای زیر دقت کنید.
نحوه حل معادله pde با تولباکس pde متلب
اولین قدم برای حل pde در محیط گرافیکی pde toolbox رسم هندسه مسئله است. کافیست روی آیکنهای موجود کلیک کرده و با استفاده از ماوس، شکل خود را رسم کنید. همچنین میتوان مختصات شکل را بصورت عدد نیز وارد کرد. پس از رسم هندسه، معادله pde را انتخاب و ضرایب مربوطه را وارد میکنیم.
پس از آن شرایط مرزی را با کلیک روی آیکن مربوطه و انتخاب مرز از روی شکل، تعیین میکنیم. سپس مش بندی را انجام داده و مسئله آماده حل میشود. به ویدئوی زیر دقت کنید.
حل معادله پواسون با تولباکس pde متلب
برای حل معادله پواسون با استفاده از تولباکس pde متلب به صورت زیر عمل میکنیم. ابتدای یک دایره (بعنوان هندسه مسئله) رسم میکنیم. سپس شرایط مرزی، نوع pde و مش بندی تعیین میشود. پس از آن گزینه حل را میزنیم.
به این ترتیب میتوان معادله pde را با استفاده از ابزار متلب بدون کدنویسی حل نمود.
جمعبندی
خب جلسه چهل ام از سری جلسات آموزش متلب به پایان رسید. این جلسه درباره حل معادله pde در متلب صحبت کردیم. به طور کلی حل معادله دیفرانسیل pde در متلب یا با دستور pdepe انجام میشود و یا با تولباکس pde tool. دستور pdepe فقط معادلات سهموی و بیضوی را در یک بعد مکانی حل میکند. اما با استفاده از ابزار pde tool میتوان هر معادله دیفرانسیل pde را حل نمود. برای یادگیری هرچه بیشتر کار با تولباکس pde متلب، 2 ویدئو از نحوه کار با آن ارائه کردیم. امیدواریم که این جلسه برای شما مفید بوده باشد. بی صبرانه منتظر نظرات، سوال و ابهامات شما عزیزان هستیم. سعی میکنیم تا هرگونه سوال یا ابهامی که در این باره دارید را پاسخ دهیم.
اگر سوال و ابهامی دارید در بخش نظرات (پایین همین صفحه) به ما بگید. از فهرست سمت راست هم میتونید به بقیه جلسات دسترسی داشته باشید.
2 Comments
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام . یک نمونه از معادلاتی که شامل سیگما هستند رو لازم دارم .(i=1) ∑ i از 1 تا n
درود بر شما
لطفا رسم گراف توابع انتقال حرارت تشعشعی را هم آموزش دهید
سپاس .