分别用 欧拉法 和 四阶龙格-库塔法 解微分方程dy/dx=xy ,x=[0,3] ,x=0 时 y=1请写出matlab源程序,和运行结果,
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/25 16:04:45
![分别用 欧拉法 和 四阶龙格-库塔法 解微分方程dy/dx=xy ,x=[0,3] ,x=0 时 y=1请写出matlab源程序,和运行结果,](/uploads/image/z/6843129-33-9.jpg?t=%E5%88%86%E5%88%AB%E7%94%A8+%E6%AC%A7%E6%8B%89%E6%B3%95+%E5%92%8C+%E5%9B%9B%E9%98%B6%E9%BE%99%E6%A0%BC-%E5%BA%93%E5%A1%94%E6%B3%95+%E8%A7%A3%E5%BE%AE%E5%88%86%E6%96%B9%E7%A8%8Bdy%2Fdx%3Dxy+%2Cx%3D%5B0%2C3%5D+%2Cx%3D0+%E6%97%B6+y%3D1%E8%AF%B7%E5%86%99%E5%87%BAmatlab%E6%BA%90%E7%A8%8B%E5%BA%8F%2C%E5%92%8C%E8%BF%90%E8%A1%8C%E7%BB%93%E6%9E%9C%2C)
分别用 欧拉法 和 四阶龙格-库塔法 解微分方程dy/dx=xy ,x=[0,3] ,x=0 时 y=1请写出matlab源程序,和运行结果,
分别用 欧拉法 和 四阶龙格-库塔法 解微分方程
dy/dx=xy ,x=[0,3] ,x=0 时 y=1
请写出matlab源程序,和运行结果,
分别用 欧拉法 和 四阶龙格-库塔法 解微分方程dy/dx=xy ,x=[0,3] ,x=0 时 y=1请写出matlab源程序,和运行结果,
f=inline('x*y','x','y'); %微分方程的右边项
dx=0.05; %x方向步长
xleft=0; %区域的左边界
xright=3; %区域的右边界
xx=xleft:dx:xright; %一系列离散的点
n=length(xx); %点的个数
y0=1;
%%(1)欧拉法
Euler=y0;
for i=2:n
Euler(i)=Euler(i-1)+dx*f(xx(i-1),Euler(i-1));
end
%%(2)龙格库塔法
RK=y0;
for i=2:n
k1=f(xx(i-1),RK(i-1));
k2=f(xx(i-1)+dx/2,RK(i-1)+k1*dx/2);
k3=f(xx(i-1)+dx/2,RK(i-1)+k2*dx/2);
k4=f(xx(i-1)+dx,RK(i-1)+k3*dx);
RK(i)=RK(i-1)+dx*(k1+2*k2+2*k3+k4)/6;
end
%%Euler和Rk法结果比较
plot(xx,Euler,xx,RK)
hold on
%精确解用作图
syms x
rightsolve=dsolve('Dy=x*y','y(0)=1','x');%求出解析解
rightdata=subs(rightsolve,xx);%将xx代入解析解,得到解析解对应的数值
plot(xx,rightdata,'r*')
legend('Euler','Runge-Kutta','analytic')