تبلیغات
آموزش مطلب - مطالب بهمن 1385

معادلات هذلولی ۲

نویسنده :امین باشی
تاریخ:دوشنبه 9 بهمن 1385-05:01 ق.ظ

مثال مطلب قبلی در نظر بگیرید٬ یک بار دیگر می خواهیم این مثال را حل کنیم.

اولین تغییری که در حل مثال می دهیم٬ نحوه شبکه بندی مسئله است.به نظر می آید که تعداد گره ها برای حل مسئله کافی نباشد با استفاده از دستور refinemesh تعداد گره ها بیشتر می کنیم.با زیاد  شدن گره ها تعتداد محاسبات و زمان آن بالا تر می رود ولی ممکن است که نتیجه کار چندان تغییر نکند و یا بهتر باشد که نوع شبکه را عوض کنیم. برای درک بهتر می توانید به کتاب هایی در مورد روش تفاضل محدود-متلب از این روش استفاده می کند- مراجعه کنید.

  

[p,e,t]=initmesh(g);

[p,e,t]=refinemesh(g,p,e,t);

x=p(1,';

y=p(2,';

u0=atan(cos(pi/2*x));

ut0=3*sin(pi*x).*exp(cos(pi*y));

tlist=linspace(0,5,50);

uu=hyperbolic(u0,ut0,tlist,b,p,e,t,1,0,0,1);



نوع مطلب : حل pde 

معادلات هذلولی

نویسنده :امین باشی
تاریخ:پنجشنبه 5 بهمن 1385-10:01 ق.ظ

با استفاده از رابط گرافیکی pdetool حل معادلات پاره ای  بسیار ساده است اما بهتر است كه برای درك بهتر، مسئله را به صورت دستی و با نوشتن کد حل کنیم.

فرض کنید بخواهیم معادله موج زیر را حل کنیم :

معادله موج از نوع معادلات هذلولی است و برای حل آن از دستور hyperbolic استفاده می‌كنیم.

u1=hyperbolic(u0,ut0,tlist,b,p,e,t,c,a,f,d)

منظور از

 u0 و ut0 شرایط اولیه

tlist بازه زمانی حل مسأله

b شرایط مرزی

p,e,t تقسیم بندی مسأله

c,a,f,d ضرایب معادله

می باشد

نوشتن شرایط مرزی را بعدا توضیح می دهم و لی برای  این مسئله از pdetool استفاده می كنیم، یك pdetool باز كنید و یك مربع بكشید، شرایط مرزی را مشخص كنید و در متغیرهای b,g ذخیره كیند.

حل نهایی مسئله به این صورت می‌شود.

 

[p,e,t]=initmesh(g);

x=p(1,:)';

y=p(2,:)';

u0=atan(cos(pi/2*x));

ut0=3*sin(pi*x).*exp(cos(pi*y));

tlist=linspace(0,5,50);

uu=hyperbolic(u0,ut0,tlist,b,p,e,t,1,0,0,1);

for i=1:50

    pdesurf(p,t,uu(:,i))

    drawnow

end

 

شاید شما روش من را نپسندید، اینكه یك چیزایی را توضیح نمی دهم  و مطالبم گنگ به نظر می‌آید.

به نظر من اگر واقعا به این چیزها احتیاج دارید باید برایش زحمت بكشید.

 



نوع مطلب : حل pde 





All right reserved©2005 Amin Bashi