#include <iostream.h>
class RK
{
private:
double k1,k2,k3,k4;
double h,b,u,a;
public:
void seth(double l=0){h=l;} //设步长
void setf(double xa=0,double xb=0,double y=0) //设初值和范围(xa,xb)
{
b=xb;
a=xa;
u=y;
}
double f(double t,double u) //函数值,修改它以适应各自需要
{
//函数设定
double f=u-2*t/u;
return f;
}
void dork() //R-K 主函数
{
for(int count=0;count<(b-a)/h;count++)
{
k1=f(a+count*h,u);
k2=f(a+count*h+h/2,u+h*k1/2);
k3=f(a+count*h+h/2,u+h*k2/2);
k4=f(a+count*h+h,u+h*k3);
u=u+h*(k1+2*k2+2*k3+k4)/6;
cout<<u<<endl;
}
}
};
void main()
{
RK my;
my.seth(0.1);
my.setf(0,1,1);
my.dork();
}