数值计算程序.利用亚当姆斯方法求解微分方程y'=y-2x/y ; y(0)=1 的值.0≤x≤1
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/02 19:31:39
![数值计算程序.利用亚当姆斯方法求解微分方程y'=y-2x/y ; y(0)=1 的值.0≤x≤1](/uploads/image/z/11954840-32-0.jpg?t=%E6%95%B0%E5%80%BC%E8%AE%A1%E7%AE%97%E7%A8%8B%E5%BA%8F.%E5%88%A9%E7%94%A8%E4%BA%9A%E5%BD%93%E5%A7%86%E6%96%AF%E6%96%B9%E6%B3%95%E6%B1%82%E8%A7%A3%E5%BE%AE%E5%88%86%E6%96%B9%E7%A8%8By%27%3Dy-2x%2Fy+%3B+y%280%29%3D1+%E7%9A%84%E5%80%BC.0%E2%89%A4x%E2%89%A41)
数值计算程序.利用亚当姆斯方法求解微分方程y'=y-2x/y ; y(0)=1 的值.0≤x≤1
数值计算程序.利用亚当姆斯方法求解微分方程y'=y-2x/y ; y(0)=1 的值.0≤x≤1
数值计算程序.利用亚当姆斯方法求解微分方程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
程序有些小问题,现在没时间改了.有时间再和你交流.