发布网友 发布时间:2023-10-19 17:07
共1个回答
热心网友 时间:2024-12-04 06:48
主程序
clc;clear
x0=0;y0=1;
h=0.1;
Nstep=floor(1/h);
[x2,y2]=Rung_Kutta(@myfun,x0,y0,h,Nstep);
plot(x2,y2)
xlabel('x')
ylabel('y')
box off
grid on
函数程序1
function y1=myfun(x,y)
%% a self-defined function
y1=sqrt(x+y);
end
函数程序2
function [x,y]=Rung_Kutta(fxy,x0,y0,h,Nstep)
%% Rung_Kutta法求解微分方程
% y'=fxy y(x0)=y0
% h: 步长 Nstep: 步数
x=zeros(Nstep+1,1);
y=x;
x(1)=x0;
y(1)=y0;
for i=1:Nstep
x(i+1)=x(i)+h;
k1=fxy(x(i),y(i));
k2=fxy(x(i)+h/2,y(i)+h/2*k1);
k3=fxy(x(i)+h/2,y(i)+h/2*k2);
k4=fxy(x(i)+h,y(i)+h*k3);
y(i+1)=y(i)+h/6*(k1+2*k2+2*k3+k4);
end
end
最后结果