微分方程数值解第一次报告
徐松松41345053计1304 一:实验目的
掌握MATLAB语言、C/C++语言编写计算程序的方法、掌握改进欧拉法与四阶龙格-库塔求解一阶常微分方程的初值问题。掌握使用MATLAB程序求解常微分
方程问题的方法。
二:实验内容
分别写出改进欧拉法与四阶龙格-库塔求解的算法,编写程序上机调试出结果,要求所编程序适用于任何一阶常微分方程的数值解问题,即能解决这一类问题,而不是某一个问题。
实验中以下列数据验证程序的正确性。
y′=?xy2
y0=2(0<=x<=5) , 步长h=0.25。
三:源程序
改进后欧拉格法程序源代码:
function [] = GJOL(h,x0,y0,X,Y)
format long
h=input('h=');
x0=input('x0=');
y0=input('y0=');
disp('输入的范围是');
X=input('X=');
Y=input('Y=');
n=round((Y-X)/h);
i=1;x1=0;yp=0;yc=0;
for i=1:1:n
x1=x0+h;
yp=y0+h*(-x0*(y0)^2);%yp=y0+h*(y0-2*x0/y0);%
yc=y0+h*(-x1*(yp)^2);%yc=y0+h*(yp-2*x1/yp);%
y1=(yp+yc)/2; x0=x1;y0=y1;
y=2/(1+x0^2);%y=sqrt(1+2*x0);%
fprintf('?á1?=%.3f,%.8f,%.8f\n',x1,y1,y);
end
end
四阶龙格库塔法源程序:
function [] = LGKT(h,x0,y0,X,Y)
format long
h=input('h=');