اموزش متلب_pdepe(حل عددی معادله حرارت پاره ای وابسته به زمان)

امروز قراره معادلات گرمایی در فضای تک بعد رو با چند مثال بررسی کنیم.

برای حل معادله گرما در زمان t و در فضای تک بعدی از دستور pdepe استفاده می‌کنیم.

 

فرم کلی معادله سھمی‌وار متلب بصورت زیر می‌باشد  .

PDE example in MATLAB video tutorial 1

و ھمین طور فرم کلی شرایط مرزی بصورت زیر می‌باشد.

PDE example in MATLAB video tutorial 2

که xl نمایانگر نقطه ابتدا و xr نمایانگر نقطه انتهایی شرایط مرزی می‌باشد.توجه کنید که b دارای مقدار ثابت در هر دو معادله است.هر کدام از معادله‌های بالا را در m.file جداگانه قرار می‌دهیم.مقادیر s,b,c را از مقایسه معادله حاکم در مثال با فرم کلی معادله سهمیگون در متلب بدست اورده و در m.file قرار می‌دهیم.مقادیر p,q را نیز از مقایسه شرایط مرزی مسئله با فرم کلی شرایط مرزی تعریف شده برای متلب بدست می‌اوریم.و در اخر نیز شرایط کرانه ای را در m.file سوم قرار می‌دهیم.سپس به کمک دستور pdepe سه m.file را ترکیب کرده معادله را حل می‌کنیم.

:Example

معادله  اصلی بصورت:

PDE example in MATLAB video tutorial 3

 

شرایط مرزی بصورت:

PDE example in MATLAB video tutorial 4

و شرایط اولیه بصورت:

PDE example in MATLAB video tutorial 5

کاملا مشخص است که مقدار c=1 می‌باشد.همچنین ما در طرف راست معادله حاکم بر مسئله مشتق دوم بر حسب x را داریم.پس مقدار b باید برابر ux باشد.مقدار s نیز که به وضوح مشخص است که برابر 0 می‌باشد. ملاحضه کردید که مقادیر c,b,s طوری در معادله سهمیگون مقدار دهی شدند که به معادله حاکم بر مسئله برسیم.مقدار m نیز باید برابر 0 باشد تا عملا x از معادله حذف شود. m را در اخر مقدار دهی میکنیم.

 

کد زیر نمایانگر معادله اصلی و در eqn1.m ذخیره می‌کنیم.


function [c,b,s] = eqn1(x,t,u,DuDx)

%EQN1: MATLAB function M-file that specifies

%a PDE in time and one space dimension.

c = 1;

b = DuDx;

s = 0;


برای شرایط مرزی نیز مطابق معادله اصلی عمل می‌کنیم. برنامه نویسان شرایط مرزی را بگونه ای به فرم بالا در اورده اند تا برای تمامی‌معادلات عمومیت داشته باشد.ما با تعیین ضرایب بگونه ای عمل می‌کنیم تا فرم کلی شرایط مرزی تبدیل به شرایط مرزی مثال شود.

به شرایط ابتدایی دقت کنید.مقدار q برابر 0 است تا b حذف شود.در متیجه p برابر با u می‌شود.

و برای شرایط انتهایی نیز به همین صورت, q برابر صفر و مقدار p برابر با u-1 است.حالا نتایج رو در فایل bc1 ذخیره می‌کنیم.


function [pl,ql,pr,qr] = bc1(xl,ul,xr,ur,t)

%BC1: MATLAB function M-file that specifies boundary conditions

%for a PDE in time and one space dimension.

pl = ul;

ql = 0;

pr = ur-1;

qr = 0;


و همینطور شرط اولیه را در initial1.m ذخیره می‌کنیم.


function value = initial1(x)

%INITIAL1: MATLAB function M-
le that speci
es the initial condition

%for a PDE in time and one space dimension.

value = 2*x/(1+x^2);


و حالا نوبت به حل مساله به کمک دستور pdepe رسیده است.مساله را در زمان 10ثانیه نخست و طول واحد(مثلا یک لوله به طول واحد) حل می‌کنیم.


%PDE1: MATLAB script M-file that solves and plots

%solutions to the PDE stored in eqn1.m

m = 0;

% NOTE: m=0 specifies no symmetry in the problem. Taking

% m=1 specifies cylindrical symmetry, while m=2 specifies

% spherical symmetry.

%

% Define the solution mesh

x = linspace(0,1,20);

t = linspace(0,10,10);

%Solve the PDE

u = pdepe(m,@eqn1,@initial1,@bc1,x,t);

% Plot solution

figure(1)

surf(x,t,u);

title(‘Surface plot of solution’);

xlabel(‘Distance x’);

ylabel(‘Time t’);

figure(2)

for i=1:length(t)

   plot(x,u(i,:))

   hold on

end


جواب u بصورت یک ماتریس به اندازه t و x ذخیره شده است.برای مثال (u(1,5 مقدار دما در نقطه((t(1),x(5)

مشخص می‌کند.

ما می‌تونیم به کمک دستور((:,plot(x,u(1 بردار دما را در اغاز (t=0) رسم می‌کنیم.

 


 

output PDE example in MATLAB video tutorial

output 2 PDE example in MATLAB video tutorial

 

 

 

مثال بعدی :

PDE example in MATLAB video tutorial 7

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


function [c,f,s] = eqn2(x,t,u,DuDx)

c = pi^2;

f = DuDx;

s = 0;


function [pl,ql,pr,qr] = bc2(xl,ul,xr,ur,t)

pl = ul;

ql = 0;

pr = pi * exp(-t);

qr = 1;


 

function u0 = initial2(x)

u0 = sin(pi*x);


و از دستور pdepe استفاده می‌کنیم:

m = 0;

x = linspace(0,1,20);

t = linspace(0,5,20);

u = pdepe(m,@eqn3,@initial3,@bc3,x,t);

figure(1)

surf(x,t,u);

title(‘Surface plot of solution’);

xlabel(‘Distance x’);

ylabel(‘Time t’);

figure(2)

plot(x,u(2,:))

title(‘Solution at t = 2’)

xlabel(‘Distance x’)

ylabel(‘u(x,2)’)

% Creat animation

figure(3)

fig = plot(x,u(1,:),’erase’,’xor’);

for k=1:length(t)

 set(fig,’xdata’,x,’ydata’,u(k,:),’color’,’r’)

 pause(0.1)

end


دریافت کتابچه حل معادلات ديفرانسيل با مشتقات پاره اي با MATLAB

1 نظر در “اموزش متلب_pdepe(حل عددی معادله حرارت پاره ای وابسته به زمان)”

  1. با عرض سلام و خسته نباشید
    میخواستم بدونم از فرمان pdepe میشه برای حل دستگاه های معادلات pde با تعداد معادله زیاد هم استفاده کرد یا تو تعداد معادلات محدودیت وجود داره؟
    اگر این توانایی رو نداره چه روشی رو برای حل دستگاه معادله pde مرتبه اول با حدود ۲۰ معادله و ۲۰ مجهول پیشنهاد میدین!؟
    خیلی ممنون از مطالب خوبتون، موفق باشید

پیام بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

+ forty three = forty six