امروز قراره معادلات گرمایی در فضای تک بعد رو با چند مثال بررسی کنیم.
برای حل معادله گرما در زمان t و در فضای تک بعدی از دستور pdepe استفاده می کنیم.
فرم کلی معادله سھمی وار متلب بصورت زیر می باشد .
و ھمین طور فرم کلی شرایط مرزی بصورت زیر می باشد.
که xl نمایانگر نقطه ابتدا و xr نمایانگر نقطه انتهایی شرایط مرزی می باشد.توجه کنید که b دارای مقدار ثابت در هر دو معادله است.هر کدام از معادله های بالا را در m.file جداگانه قرار می دهیم.مقادیر s,b,c را از مقایسه معادله حاکم در مثال با فرم کلی معادله سهمیگون در متلب بدست اورده و در m.file قرار می دهیم.مقادیر p,q را نیز از مقایسه شرایط مرزی مسئله با فرم کلی شرایط مرزی تعریف شده برای متلب بدست می اوریم.و در اخر نیز شرایط کرانه ای را در m.file سوم قرار می دهیم.سپس به کمک دستور pdepe سه m.file را ترکیب کرده معادله را حل می کنیم.
:Example
معادله اصلی بصورت:
شرایط مرزی بصورت:
و شرایط اولیه بصورت:
کاملا مشخص است که مقدار 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) رسم می کنیم.
مثال بعدی :
وکد زیر رو برای مساله به این صورت می نویسیم:
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
با عرض سلام و خسته نباشید
میخواستم بدونم از فرمان pdepe میشه برای حل دستگاه های معادلات pde با تعداد معادله زیاد هم استفاده کرد یا تو تعداد معادلات محدودیت وجود داره؟
اگر این توانایی رو نداره چه روشی رو برای حل دستگاه معادله pde مرتبه اول با حدود ۲۰ معادله و ۲۰ مجهول پیشنهاد میدین!؟
خیلی ممنون از مطالب خوبتون، موفق باشید