سلام
متلب من گیر داده تو این برنامه ای در زیر میارمش جواب ها رو کسری حساب میکنه
با دستور format long و format short و ... هم هیچ تفییری ایجاد نمیکنه
حالا تو همین متلب میرم تو یه فایل دیگه و اون رو ران میکنم همه چی درسته
نمیدونم ایراد از دستورات این فایله ؟؟
clear
clc
format long
disp('RK4 ')
h=.3;
xz=0;
yz=1;
syms('x','y');
f=inline(y+x^2);
x(1)=xz;
y(1)=yz;
for i=2:99
k1(i)=h*f(x(i-1),y(i-1));
k2(i)=h*f(x(i-1)+(h/2),y(i-1)+(k1(i)/2));
k3(i)=h*f(x(i-1)+(h/2),y(i-1)+(k2(i)/2));
k4(i)=h*f(x(i-1)+h,y(i-1)+k3(i));
y(i)=y(i-1)+(k1(i)+2*k2(i)+2*k3(i)+k4(i))/6;
x(i)=x(i-1)+h;
end
به خاطر اینه که از متغیرهای نمادین استفاده کردید. این اصلاح شده اش:
کد:
clear, clc
disp('RK4 ')
h=0.3;
xz=0;
yz=1;
f=inline('y+x^2');
x(1)=xz;
y(1)=yz;
for i=2:99
k1(i)=h*f(x(i-1),y(i-1));
k2(i)=h*f(x(i-1)+(h/2),y(i-1)+(k1(i)/2));
k3(i)=h*f(x(i-1)+(h/2),y(i-1)+(k2(i)/2));
k4(i)=h*f(x(i-1)+h,y(i-1)+k3(i));
y(i)=y(i-1)+(k1(i)+2*k2(i)+2*k3(i)+k4(i))/6;
x(i)=x(i-1)+h;
end