پیاده سازی روش اویلر با کدهای متلب
روش اویلر، یک روش عددی برای حل معادلات دیفرانسیل مرتبه اول می باشد. به عنوان مثال، فرض کنید یک معادله دیفرانسیل مرتبه اول، به صورت زیر داشته باشیم :
\[\begin{aligned} y'-y=0 ~~ , ~~ y(0)=1 \end{aligned} \]
که در آن، y تابعی از x می باشد. حال می خواهیم آن را با روش اویلر حل کنیم. اولین قدم این است که معادله را مطابق شکل کلی زیر بنویسیم :
\[\begin{aligned} y'=f(x,y) \end{aligned} \]
بنابراین معادله، به این صورت نوشته می شود :
\[\begin{aligned} y'=y \end{aligned} \]
اکنون باید از رابطه بازگشتی روش اویلر، که به صورت زیر می باشد، استفاده کنیم :
\[\begin{aligned} y_{n+1}=y_n+hf(x_n,y_n) \end{aligned} \]
که در آن، h ، اندازه گام می باشد. h میزان اختلاف بین xn و xn+1 است، یعنی :
\[\begin{aligned} x_{n+1}-x_n=h \end{aligned} \]
اولین مقدار n ، برابر صفر می باشد و ما باید مقدار y0 که برای نقطه x0 می باشد را داشته باشیم، که همان شرط اولیه است. برای مثالی که در بالا بیان شد، این مقادیر به صورت زیر می باشند :
\[\begin{aligned} x_0=0 ~~ , ~~ y_0=1 ~~ \to ~~ f(x_0,y_0)=1 \end{aligned} \]
اگر h را برابر 0.1 انتخاب کنیم، آنگاه x1 برابر 0.1 و y1 برابر مقدار y برای آن x می باشد که به صورت زیر به دست می آید :
\[\begin{aligned} y_1=y_0+hf(x_0,y_0)=1+0.1f(0,1)=1+0.1(1)=1.1 \end{aligned} \]
اکنون می توانیم از دو مقدار x1 و y1 ، مقدار y در نقطه x2=0.2 را به دست بیاوریم و همین طور ادامه می دهیم تا تمامی نقاط دلخواه را در بازه مورد نظرمان از x ، محاسبه کنیم.
اکنون کدهای متلب را برای روش اویلر می نویسیم و همین معادله را که مثال زدیم، با آن حل می کنیم و پاسخ ها را برای بازه x بین 0 تا 5 رسم خواهیم کرد. کدهای متلب برای روش اویلر، به این صورت خواهند بود :
close all
clc
x_0=0;
y_0=1;
h=0.1;
X=0:0.1:5;
L_X=length(X);
Y=zeros(1,L_X);
Y(1)=y_0;
y_n=y_0;
for mm=2:L_X
Y(mm)=y_n+h*(y_n);
y_n=Y(mm);
end
plot(X,Y)
xlabel('x')
ylabel('y')
سه خط اول برنامه، برای عدم تداخل آن با نتایج حاصل از اجرای برنامه های قبلی در نرم افزار متلب می باشد. دستور clear all ، تمامی متغیرهایی که قبلا در نرم افزار متلب تعریف شده اند را پاک می کند. دستور close all ، پنجره تمامی شکل هایی که قبلا در متلب باز شده اند را می بندد. دستور clc ، اطلاعات نمایش داده شده در پنجره command را پاک می کند. x_0 و y_0 همان مقادیر مربوط به شرط اولیه هستند. یک بازه برای متغیر x ، در بردار X تعریف کرده ایم که مقادیر y برای تمامی نقاط بردار X را باید محاسبه کنیم. با دستور length ، طول بردار X محاسبه شده است و سپس با دستور zeros ، یک بردار هم اندازه با بردار X ساخته ایم که مقدار تمامی عناصر آن، برابر صفر است و نام آن را Y انتخاب کرده ایم، زیرا مقادیر y در این بردار ذخیره خواهند شد. مقدار y_0 را داریم و بنابراین باید آن را در اولین عنصر بردار Y قرار بدهیم. در حلقه for ، سایر مقادیر y با استفاده از رابطه بازگشتی محاسبه شده اند. در نهایت، با دستور plot ، مقادیر y که برای یک بازه از x محاسبه شده اند را رسم کرده ایم.
نتیجه :
درود این معادله رو باید چطوری حل کنیم ؟؟
x * sqrt (y) = y'