算法的程序框图:
具体的算法:
(1)读取x0,y0,h,n,以及给定的f(x,y)
(2) 从i = 1开始每次i++,重复以下操作,直到i=n退出循环
2.1 计算x1=x0+h, y1 = y0+ h*f(x0,y0);y2=y0+f(x1,y1); y3 =(y1+y2)/2;
2.2打印x1,y3
2.3 x0=x1;y0 = y1;
源程序代码及运行结果截图
#include<iostream>
#include<math.h>
using namespace std;
/*
@param x :获取自变量x,y对应的函数值
*/
float getFunction(float x,float y)
{
return 0.0f-y;
}
void getEulerResult(float x0,float y0,float h,int n)
{
for (int i = 1; i <= n; i++)
{
//计算x1的值
float x1 = x0 + h;
//计算y1的值
float y1 = y0 + h * getFunction(x0,y0);
//计算y2的值
float y2 = y0 + h * getFunction(x1, y1);
//计算y32的值
float y3 = (y1+y2) / 2;
//重新赋值进行迭代
x0 = x1;
y0 = y1;
cout << "x:"<<x1<<"-----> y:"<<y1<<endl;
}
}
int main()
{
//初始值x0
float x0;
//初始值y0
float y0;
//循环次数
int n;
//步长
float h;
cin >> x0;
cin >> y0;
cin >> h;
cin >> n;
/*测试数据*/
getEulerResult(0,1,0.1f,10);
system("pause");
return 0;
}