توابع ODE در متلب بمنظور حل معادلات دیفرانسیل معمولی با شرایط اولیه تدارک دیده شده اند ویژگی که برای آنها در راهنمای متلب ذکر شده است،

Solve initial value problems for ordinary differential equations

بسته به نوع اصطلاحا سخت (stiff) و غیر سخت (Nonstiff) معادلات و نیز اهمیت دقت، odeهای متفاوتی بکار می روند. اصطلاح سخت (stiff) برای آندسته از معادلاتی بکار می رود که برای مثال در مقابل متغیر مستقلی همچون t چند متغیر وابسته همچون x وy و ... وجود دارد بگونه ای که اندازه مشتقات متغیرهای وابسته نسبت به متغیر مستقل بطور قابل ملاحظه ای متفاوت است در غیر اینصورت معادله غیرسخت (Nonstiff) نامیده می شود. برای توضیحات بیشتر در مورد ode ها باید به راهنمای متلب مراجعه نمایید. متلب  نوع و محل  بکارگیر آنها را در جدول زیر خلاصه کرده است.

When to Use

Order of Accuracy

Problem Type

Solver

Most of the time. This should be the first solver you try.

Medium

Nonstiff

ode45

For problems with crude error tolerances or for solving moderately stiff problems.

Low

Nonstiff

ode23

For problems with stringent error tolerances or for solving computationally intensive problems.

Low to high

Nonstiff

Ode113

If ode45 is slow because the problem is stiff.

Low to medium

Stiff

Ode15s

If using crude error tolerances to solve stiff systems and the mass matrix is constant.

Low

Stiff

Ode23s

For moderately stiff problems if you need a solution without numerical damping

Low

Moderately Stiff

Ode23t

If using crude error tolerances to solve stiff systems.

Low

Stiff

Ode23tb

 

 

می خواهیم در اینجا به ode45 بپردازیم که برای معادلات غیر سخت تدارک دیده شده و اساس آن روش رانگ کوتاست.

برای آموزش نحوه استفاده از ode45 نوسانگر واندرپل تحت نیروی واداشته را در نظر می گیریم که معادله دیفرانسیل آن بصورت زیر نوشته می شود:

 

http://en.wikipedia.org/wiki/Van_der_Pol_oscillator

http://mathworld.wolfram.com/vanderPolEquation.html

 

گام اول- بازنویسی مسئله بشکل مجموعه ای از معادلات مرتبه یک. در مورد نوسانگر واندرپل با تغییر متغیر y1'=y2 دو معادله دیفرانسیل مرتبه یک حاصل می­شود،

 

گام دوم- کد نمودن ODE های مرتبه یک، پس از بازنویسی معادلات مطابق گام اول باید ان معادلات را برای بکارگیری ode45 کد نماییم. تابع باید بشکل زیر باشد،

dydt=odefun(t,y)

دقت کنید که تابع حتما باید دو آرگومان یکی مربوط به متغیر مستقل (در اینجا t) و دیگری مربوط به متغیرهای وابسته (در اینجا y) داشته باشد حتی اگر هیچکدام در تابع های مرتبه یک ظاهر نشوند. کد زیر سیستم واندپل را تحت عنوان تابع vdp1 نشان می­دهد. y(1) و y(2) ورودی های بردار دوعنصری y هستند.

function dydt=vdp1(t,y)

epsilon=5;

w=2.466;

f=5;

dydt=[y(2) ; epsilon*(1-y(1)^2)*y(2)-y(1)+f*cos(w*t)];

 

گام سوم- استفاده از یک حل کننده (solver) برای مسئله، همانگونه که گفته شد می­خواهیم از ode45 استفاده نماییم. تابع ode45 سه ورودی یا آرگومان دارد. اولین آرگومان تابعی است که آنرا گام دوم خلق کردیم، دومین آرگومان بازه مربوط به متغیر مستقل است که در مورد مسئله ما همان بازه زمانی t است و نهایتا آرگومان سوم بردار شرایط اولیه است.

در این مثال بازه زمانی [0 100] و مقادیر اولیه y(1)=1.2 و y(2)=0 را مطابق زیر در ode45 قرار می دهیم،

[t,y]=ode45(@vdp1,[0 100],[1.2 0]);

در این مثال برای پذرفتن vdp1 بعنوان یک تابع ا @ استفاده شده است. خروجی ode45 برداری از زمان t و ماتریس پاسخ y اس. هر سر y مطابق با زمانیست که توسط سطر متناظر در t معرفی می­شود. نخستین ستون y متناظر با  y(1) و ستون دوم آن متناظر با y(2) است.

گام چهارم- مشاهده خروجی، اینکار را براحتی با استفاده از plot می توان انجام داد.

plot(y(:,1),y(:,2))

xlabel('y1')

ylabel('y2')

با این توضیحات برنامه vdp1 با فرم نهایی و ساده زیر نوسانگر واندپل را در فضای فاز شبیه سازی می­کند.

function vonerpol

% vonderpole oscilator - ode45

% این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید

[t,y]=ode45(@vdp1,[0 100],[1.2 0]);

 

plot(y(:,1),y(:,2))

xlabel('y1')

ylabel('y2')

 

function dydt=vdp1(t,y)

epsilon=5;

w=2.466;

f=5;

dydt=[y(2) ; epsilon*(1-y(1)^2)*y(2)-y(1)+f*cos(w*t)];

 

 

مطالب مشابه

تنظيم خروجيها روي صفحه نمايش ب

اگر مقدار يك متغير را بخواهيد بدانيد مي توانيد آن

آموزش كاربردي مباحث پيشرفته با

آموزش كاربردي مباحث پيشرفته با Matlab            

معادلات دیفرانسیل معمولی – مسا

معادلات دیفرانسیل معمولی – مسایل مقدار اولیه Ordi

معادلات دیفرانسیل جزیی partial

معادلات دیفرانسیل جزیی partial differentia

ايجاد شبكه‌هاي عصبي با ابزار G

به طور كلي در نرم‌افزار MATLAB به سه روش مي‌توان ش

کارهای ریاضی با MATLAB

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

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید