关于C++龙格库塔程序,求解答解决方案

关于C++龙格库塔程序,求解答
#include<iostream>
#include<iomanip>
using namespace std;
double f(double x,double y)
{
double r;
r=y*y;
return(r);
//此处的函数可根据所求函数进行更改
}
double Runge_Kuta(double f(double x,double y),double x0,double y0)
//计算函数y’=(3*t-y)/2
{
double k1,k2,k3,k4,y,h;
k1=f(x0,y0);
k2=f(x0+h/2.0,y0+k1*h/2.0);
k3=f(x0+h/2.0,y0+k2*h/2.0);
k4=f(x0+h/2.0,y0+k3*h);
y=y0+(k1+2*k2+2*k3+k4)/6.0;
return(y);
//在此函数中,x0,y0为初值,h为步长,y是结果
}

int main()
{
double x0,y0,y,x;
int i,M;              //M为迭代次数
cout<<"请输入初值x0,y0:"<<endl;
cin>>x0>>y0;
double h;
cout<<"请输入步长h:"<<endl;
cin>>h;
cout<<"请输入迭代次数M:"<<endl;
cin>>M;
for(i=0;i<=M;i++)
{
y=Runge_Kuta(f,x0,y0);
x=x0+i*h;
cout.precision(10);
cout<<setw(8)<<x<<setw(18)<<y<<endl;
}
return 0;
}


这个程序是数学算法本身有问题还是程序代码没有写周全?
得出的结果总是1.INF
关于C++龙格库塔程序,求解答解决方案

C++ 算法

------解决方案--------------------
这种问题单步一下就知道问题在那里了,目测Runge_Kut函数中h没赋值
------解决方案--------------------
2个问题:
1、f函数中r的计算有问题,r=y*y,那么x就没有用。
2、Runge_Kuta函数中局部变量h没有赋初值,这样用的话,肯定会出现错误。应该把main函数中的h变量传值到Runge_Kuta函数中。

#include<iostream>
#include<iomanip>
using namespace std;
double f(double x,double y)
{
double r;
r=x*y;
return(r);
//此处的函数可根据所求函数进行更改
}
double Runge_Kuta(double f(double x,double y),double x0,double y0,double h)
//计算函数y’=(3*t-y)/2
{
double k1,k2,k3,k4,y;
k1=f(x0,y0);
k2=f(x0+h/2.0,y0+k1*h/2.0);
k3=f(x0+h/2.0,y0+k2*h/2.0);
k4=f(x0+h/2.0,y0+k3*h);
y=y0+(k1+2*k2+2*k3+k4)/6.0;
return(y);
//在此函数中,x0,y0为初值,h为步长,y是结果
}

int main()
{
double x0,y0,y,x;