دستورpde در متلب
معادلات دیفرانسیل جزئی یا معادلاتPDE از مسائل مهم ریاضیات و مهندسی هستند که برای مدلسازی پدیدههای فیزیکی در زمینههای مختلفی همانند انجام پروژه مکانیک، دینامیک سیالات و انتقال حرارت استفاده میشوند. نرمافزار متلب برای حل معادلاتPDE ابزاری قوی فراهم میآورد و برای استفاده از قابلیتهایPDE در متلب بایدToolbox مربوطه نصب شده باشد. با نصب بودن این Toolbox، دستورpde امکان حل معادلات دیفرانسیل جزئی را فراهم میکند. در ادامه با با همراه باشید تا برای انجام پروژه متلب خود با دستور pde آشنا شوید.
بخش های مختلف استفاده از این کد به شرح جدول زیر است:
ردیف | توضیح | دستور |
1 | ساخت مدل:createpde یک مدل PDE جدید ایجاد میکند و آن را در متغیرmodel ذخیره میکند. | model = createpde |
2 | تعریف هندسه مساله: از تابع geometryFromEdges استفاده شده است.geometry یک آرایه حاوی پارامترهای هندسی مستطیل را تعریف میکند و geometryFromEdges هندسه را به مدل اضافه میکند. | geometryFromEdges (model, geometry) |
3 | تعیین معادله PDE | specifyCoefficients (model, … ) |
4 | تعیین شرایط مرزی | applyBoundaryCondition (model, …) |
5 | شبکه بندی مدل | generateMesh(model) |
6 | حل معادله | solvepde(model) |
7 | نمایش نتایج به صورت گرافیکی | pdeplot(model,) |
مثال 1: استفاده از دستور pde در حل معادلات دو بعدی
clc; clear;
model = createpde;
R1 = [3,4,-1,1,1,-1,0.5,0.5,-0.75,-0.75]’;
C1 = [1,0.5,-0.25,0.25]’;
C1 = [C1;zeros(length(R1) – length(C1),1)];
gm = [R1,C1];
sf = ‘R1-C1’;
ns = char(‘R1′,’C1’);
ns = ns’;
g = decsg(gm,sf,ns);
geometryFromEdges(model,g);
figure(1)
pdegplot(model,’EdgeLabels’,’on’)
axis equal
xlim([-1.1,1.1])
applyBoundaryCondition(model,’dirichlet’,’edge’,3,’u’,32);
applyBoundaryCondition(model,’dirichlet’,’edge’,1,’u’,72);
applyBoundaryCondition(model,’neumann’,’edge’,[2,4:8],’g’,-1);
specifyCoefficients(model,’m’,0,’d’,0,’c’,1,’a’,0,’f’,10);
generateMesh(model,’Hmax’,0.1);
results = solvepde(model);
u = results.NodalSolution;
figure(2)
pdeplot(model,’XYData’,u,’ZData’,u)
view(-23,8)
خروجی کد:
توضیح کد:
در این مثال، حل معادله دوبعدی Pde همانند انتقال حرارت در صفحه دو بعدی بررسی شده است.
cmdel = createpde;
این خط یک مدل جدید PDE ایجاد میکند و آن را در متغیر cmdel ذخیره میکند.
R1 = [3,4,-1,1,1,-1,0.5,0.5,-0.75,-0.75]’;
C1 = [1,0.5,-0.25,0.25]’;
C1 = [C1;zers(length(R1) – length(C1),1)];
R1 : مختصات و مشخصات یک مستطیل (شکل هندسی) را تعریف میکند.
C1: مختصات و مشخصات یک دایره (یا شکل دیگر) را تعریف میکند.
C1 = [C1;zers(length(R1) – length(C1),1)];
gm = [R1,C1];
sf = ‘R1-C1’;
gm: یک ماتریس هندسی (gemetric matrix) ایجاد میکند که شامل R1 و C1 است.
sf: یک رشته هندسی (gemetry string) تعریف میکند که نشان میدهد که R1 از C1 کسر میشود.
ns = char(‘R1′,’C1’);
ns = ns’;
ns: نامهای هندسی را به صورت کاراکتر تعریف میکند.
‘;ns = ns
: ماتریس نامها را به صورت عمودی تبدیل میکند.
;g = decsg(gm,sf,ns)
این خط هندسه نهایی را با استفاده از تابع decsg ایجاد میکند که هندسه اصلی و روابط بین اشکال را مشخص میکند.
gemetryFrmEdges(mdel,g);
هندسه ایجاد شده را به مدل PDE اضافه میکند.
fpdegplt(mdel,’EdgeLabels’,’n’)
دستور فوق، هندسه مدل را رسم میکند و برچسبهای لبهها را نمایش میدهد.
applyBundaryCnditin(mdel,’dirichlet’,’edge’,3,’u’,32);
applyBundaryCnditin(mdel,’dirichlet’,’edge’,1,’u’,72);
applyBundaryCnditin(mdel,’neumann’,’edge’,[2,4:8],’g’,-1);
این خطوط شرایط مرزی را برای مدل PDE اعمال میکنند که در آن اولین خط، شرایط مرزی دیریکله (Dirichlet) برای لبه 3 با مقدار 32 است. دومین خط، شرایط مرزی دیریکله برای لبه 1 با مقدار 72 است. سومین خط، شرایط مرزی نیومن(Neumann) برای لبههای 2 و 4 تا 8 با مقدار -1 است.
specifyCefficients(mdel,’m’,0,’d’,0,’c’,1,’a’,0,’f’,10);
این خط ضرایب معادله PDE را مشخص میکند:
‘m’: ضریب زمان، ‘d’ : ضریب فضایی، ‘c’ : ضریب همگن، ‘a’: ضریب غیرهمگن و ‘f’ : تابع منبع است.
generateMesh(mdel,’Hmax’,0.1);
مش (شبکه) مورد نیاز برای حل PDE را با حداکثر اندازه المان 0.1 تولید میکند.
results = slvepde(mdel);
معادله PDE را حل کرده و نتایج را در متغیر results ذخیره میکند.
u = results.NdalSlutin;
راه حل نودال (Ndal slutin) معادله PDE را استخراج کرده و در متغیر u ذخیره میکند.
pdeplt(mdel,’XYData’,u,’ZData’,u)
دستوری است که نتایج را بر روی شبکه هندسی رسم میکند.
برای آشنایی با سایر دستورات مقالات زیر را بخوانید:


