تبلیغات
آموزش مطلب - مطالب حل عددی IVP

آموزش مطلب

معادلات با درجه بالاتر

چهارشنبه 1 شهریور 1385

حل عددی معادلات دیفرانسیل با درجات بالاتر از یک

 حتما می دانید که هر معادله دیفرانسیل با درجه n  را می شود به n  معادله درجه اول تبدیل کرد.از این روش برای حل معادلات با درجه بالاتر از یک استفاده می شود.

معادله زیر را در نظر بگیرید:

برای حل تحلیلی این معادله کافی است بنویسیم

f=dsolve('D2y =(y-6*Dy)/t/4','y(1)=2','y(2)=3');

 ezplot(f,[1 , 10]);

و اما حل عددی :

فرض کنید

 

در نتیجه خواهیم داشت

 

 

و اگر آن را به شکل ماتریس بنویسیم

حالا باید تابع odefun را بنوسیم

function dy=odefun(t,y)
A = [0 1;1/t/4 -6/t/4];
dy = A*y;

و در خط فرمان مطلب دستور زیر را

[t,y]=ode45('odefun',[1 ,10],[2;3]);

متغییر y دو ستون دارد که ستون اول به y1 و ستون دوم یه y2 اختصاص دارد که y1 جواب معادله و y2 مشتق آن است.

 

 



[ چهارشنبه 1 شهریور 1385 - 11:08 ق.ظ ]
[ویرایش شده در : - - -]

[ پیام ()|| امین باشی ] [حل عددی IVP , ] [+]

حل عددی IVP

دوشنبه 30 مرداد 1385

حل عددی معادلات دیفرانسیل معمولی (IVP)

روشهای زیادی برای حل عددی معادلات دیفرانسیل وجود دارد که هر کدام از این روشها برای نوعی از معادلات کاربرد دارد در مطلب نیز توابع متفاوتی بر اساس این روشها وجود دارد برای مثال 0de45 بر اساس روش رانگ کوتا عمل می کند.

[t,Y] = solver(odefun,tspan,y0)

فرم کلی حل عددی معادلات دیفرانسیل به این صورت است که به جای solver در دستور بالا نوع ode (برای مثال ode45) مورد نظر باید ذکر شود.

منظور از odefun تابعی است که در آن مادلات دیفرانسیل مورئ نظر تعریف شده است و به شکل  زیر است. t متغیر مستقل  اسکالر  و y متغیر وابسته به صورت بردار ستونی  است.

dydt = odefun(t,y)

منظور از tspan بازه ای است که معادله در آن حل می شود و y0 شرایط اولیه است.

مثال)

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

معادله دیفرانسیل این فرآیند به این صورت است .

 

 

q دبی حجمی، h ارتفاع، A سطح مقطع و R مقاومت شیر خروجی مخزن است.

برای حل این معادله ابتدا تابع odefun را تشکیل می دهیم.

فرض کنید A=1, R=1 و تغییرات دبی ورودی به صورت سینوسی باشد.

function dy=testode(t,y)
dy=sin(t)-y;

پس از ذخیره کردن نابع ، در خط فرمان مطلب دستور زیر را می نوسییم :

[t,y]=ode45('testode',[0 ,10],0); 



[ دوشنبه 30 مرداد 1385 - 03:08 ق.ظ ]
[ویرایش شده در : - - -]

[ پیام ()|| امین باشی ] [حل عددی IVP , ] [+]


نوشته های پیشین ...