使用下面的例子来进行代码展示:
向前欧拉法
a = 1;b = 2;h = 0.1;n = (b-a)/h;x(1) = 1;y(1) = 0.4;
for i = 1:n
x(i+1) = x(i) + h;
y(i+1) = y(i) + h*(x(i)^3-y(i)/x(i));
end
想输出x,y的值,式子后面就不要加分号。
向后欧拉法
这个是一个隐函数,先把隐函数转变成显函数,再进行计算
a = 1;b = 2;h = 0.1;n = (b-a)/h;x(1) = 1;y(1) = 0.4;
for i = 1:n
x(i+1) = x(i) + h;
y(i+1) = (y(i)*x(i+1)+h*x(i+1)^4)/(h+x(i+1));
end
改进的欧拉法
可分解成三步
a = 1;b = 2;h = 0.1;n = (b-a)/h;x(1) = 1;y(1) = 0.4;
for i = 1:n
K1 = x(i)^3 - y(i)/x(i);
K2 = (x(i)+h)^3 - (y(i)+h*K1)/(x(i)+h)
y(i+1) = y(i)+(h/2)*(K1+K2)
end
经典的四阶Runge-Kutta法
a = 1;b = 2;h = 0.1;n = (b-a)/h;x(1) = 1;y(1) = 0.4;
for i = 1:n
K1 = x(i)^3 - y(i)/x(i);
K2 = (x(i)+(h/2))^3 - (y(i)+(h/2)*K1)/(x(i)+(h/2));
K3 = (x(i)+(h/2))^3 - (y(i)+(h/2)*K2)/(x(i)+(h/2));
K4 = (x(i)+h)^3 - (y(i)+h*K3)/(x(i)+h);
y(i+1) = y(i) + (h/6)*(K1+2*K2+2*K3+K4)
end
四阶Adams方法
y2、y3、y4由4阶R-K方法计算。
a = 1;b = 2;h = 0.1;n = (b-a)/h;x(1) = 1;y(1) = 0.4;
x(2)=1.1; x(3)= 1.2;x(4)=1.3; y(2) = 0.475;y(3)= 0.581;y(4)=0.725;
for i = 4:n
Y(i+1)=y(i)+(h/24)*(55*(x(i)^3-y(i)/x(i))-59*(x(i-1)^3-y(i-1)/x(i-1))+37*(x(i-2)^3-y(i-2)/x(i-2))-9*(x(i-3)^3-y(i-3)/x(i-3)));
y(i+1)=y(i)+(h/24)*(9*(x(i+1)^3-Y(i+1)/x(i+1))+19*(x(i)^3-y(i)/x(i))-5*(x(i-1)^3-y(i-1)/x(i-1))+(x(i-2)^3-y(i-2)/x(i-2)));
end
计算的时候一定要仔细,不然很容易写错。
看完记得点赞,(づ ̄3 ̄)づ╭❤~