分别用2阶和3阶R-K公式求解初值问题(步长h=0.05)
1条回答 默认 最新
- CSDN专家-Matlab_Fans 2021-06-25 19:42关注
dfun = @(x,y) cos(x)*sqrt(y); h = 0.05; h = 0.05; X = 1.2:h:2.05; %% RK2 x = 1.2; % 初始值 y = 3.2; for ii = 1:length(X) x = X(ii); k1 = dfun(x,y); k2 = dfun(x+h,y+h*k1); y = y + h*(k1+k2)/2; Y1(ii) = y; end %% RK3 x = 1.2; % 初始值 y = 3.2; for ii = 1:length(X) x = X(ii); k1 = dfun(x,y); k2 = dfun(x+h/2,y+h*k1/2); k3 = dfun(x+h,y+h*(2*k2-k1)/2); y = y + h*(k1+4*k2+k3)/6; Y2(ii) = y; end figure plot(X,Y1,X,Y2,'r--') legend('RK2','RK3') ylabel('y') xlabel('x')
结果
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报