/**
***Eular方法***
Eular公式:Y(n+1)=Y(n) + h * f( x(n) , y(n) )
h=x(n+1)-x(n)
精度(误差):I= Y(x(n+1)) - Y(n+1) = h*h/2 Y''(ε) 局部截断误差
由泰勒公式可知Eular方法仅为一阶方法,是很粗糙的计算方法
属性:差分方法
《数值分析简明教程》-2 Editon -高等教育出版社- page 97 无算法流程图
代码维护:2005.6.14 DragonLord
**/
#include<iostream.h>
#include<stdio.h>
#include<math.h>
/*
举例方程:
y'= y - 2*x / y ( 0<x<1 )
y(0) = 1
*/
double f(double x,double y,double h)//方程形式
{
double re;
if(x==0)re=1;
else
re=y-2*x/y;
return re;
}
int main()
{
double x0,y0,x1,y1,h;//h为步长
double y;
int N;
while(cin>>x0>>y0>>h>>N)
{
int n=0;
for(;n<N;n++)
{
x1=x0+h;
y=sqrt(1+2*x1); //精确值
y1=y0+h*f(x0,y0,h);
printf("%.1f %.4f %.4f\n",x1,y1,y);
x0=x1;
y0=y1;
}
}
return 0;
}