作业帮 > 数学 > 作业

数值计算程序.利用亚当姆斯方法求解微分方程y'=y-2x/y ; y(0)=1 的值.0≤x≤1

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/04/28 21:40:17
数值计算程序.利用亚当姆斯方法求解微分方程y'=y-2x/y ; y(0)=1 的值.0≤x≤1
给你编写matlab的程序,行不?
%y'=y-2x/y ; y(0)=1,0¡Üx¡Ü1
%first you have to give the old message of y1\
%y2\y3.So you can use the Runge-Kutta method.
h=0.01;
x=0:h:1;
N=length(x);%The iterations
y=zeros(1,N);y(1)=1;
dy=zeros(1,N);
dy_1=zeros(1,N);
dy_2=zeros(1,N);
y_1=zeros(1,N);
y_2=zeros(1,N);
k1(1)=y(1)-2*x(1)/y(1);
k2(1)=y(1)+h*k1(1)/2-2*(x(1)+h/2)/(y(1)+h*k1(1)/2);
k3(1)=y(1)+h*k2(1)/2-2*(x(1)+h/2)/(y(1)+h*k2(1)/2);
k4(1)=y(1)+h*k3(1)-2*x(2)/(y(1)+h*k3(1));
for n=2:1:4
y(n)=y(n-1)+h*(k1(n-1)+2*k2(n-1)+2*(k3(n-1))+k4(n-1))/6;
k1(n)=y(n)-2*x(n)/y(n);
k2(n)=y(n)+h*k1(n)/2-2*(x(n)+h/2)/(y(n)+h*k1(n)/2);
k3(n)=y(n)+h*k2(n)/2-2*(x(n)+h/2)/(y(n)+h*k2(n)/2);
k4(n)=y(n)+h*k3(n)-2*x(n)/(y(n)+h*k3(n));
end
%the next is the main program (Adams method)
for t0=1:1:4
dy(t0)=y(t0)-2*x(t0)/y(t0);
end
for t=5:1:N
y_1(t)=y(t-1)+h*(55*dy(t-1)-59*dy(t-2)+37*dy(t-3)-9*dy(t-4))/24;
dy_1(t)=y_1(t)-2*x(t)/y_1(t);
y_2(t)=y(t-1)+h*(9*dy_1(t)+19*dy(t-1)-5*dy(t-2)+dy(t-3))/24;
dy_2(t)=y_2(t)-2*x(t)/y_2(t);
dy(t)=dy_2(t);
end
程序有些小问题,现在没时间改了.有时间再和你交流.