تبلیغات
آموزش مطلب - مطالب BVP

BVP

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

حل معادلات BVP

حل معادلات BVP با استفاده از دستور bvp4c انجام می شود. ساده ترین حالت استفاده از این دستور به صورت زیر است.

sol = bvp4c(odefun,bcfun,solinit)

فرض کنید y در معادله زیر صدق کند

D2y = sin(x) + 2x

و داشته باشیم

y(-pi) = 10.8696

y(pi) = 10.8696

با توجه به شرایط داده شده مساله از نوع BVP  (فرق BVP با IVP رو می دانید؟) و از مرتبه دوم است.هر وقت مرتبه معادله دفرانسیل از یک بیشتر باشد، باید آن را به معادلات مرتبه اول تجزیه کنیم.

اگر

y(1) = y

y(2) = Dy

خواهیم داشت

dydx = [ y(2);-sin(x)+2*x];

حالا شرایط مرزی را می نویسیم :

اگر res مشخص کننده شرایط مرزی باشد، شرایط مرزی را طوری می نویسیم که مقدار res در آن نقاط صفر شود یعنی

res = [ ya(1)-10.8969;yb(1)-10.8969];

منظور از a,b نقاطی است که مقدارمرزی در آن تعریف شده است.

حالا می توانیم معادله را حل کنیم (برنامه زیر)

function bvptest
solinit = bvpinit(linspace(-pi,pi,10),[-1 0]);
sol = bvp4c(@twoode,@twobc,solinit);
x = linspace(-pi,pi);
y = deval(sol,x);
plot(x,y(1,:));
%----------------------------------------------
function dydx = twoode(x,y)
dydx = [ y(2);-sin(x)+2*x];
%----------------------------------------------
function res = twobc(ya,yb)
res = [ ya(1)-10.8969;yb(1)-10.8969];

همانطور که می بنید در خط دوم برنامه از دستور bvpint استفاده شده است. این دستور برای تعریف حدس اولیه  بکار می رود.

solinit = bvpinit(x,yinit)

بردار x بازه ای است که معادله در آن حل می شود. و y حدس اولیه است.

در این مثال، معادله را در بازه [pi,pi-] حل کرده و این بازه را به 10 قسمت تقسیم کرده ایم.

کار دستور deval محاسبه جواب معادله در یک بازه دیگر است، این بازه باید زیر مجموعه بازه قبلی باشد.

مطالب گفته شده برای معادلات مرتبه دوم کابرد دارد و برای معادلات مرتبه بالاتر لازم است تغیراتی در نحوه استفاده از دستور bpvinit و نحوه نعریف شرایط مرزی داده شود.



نوع مطلب : BVP 





All right reserved©2005 Amin Bashi