/** ***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; }
|