#include #include static double h=1.0/1024; double exacty(double x){ return x*x*cos(x); } double f(double x,double y){ return 2/x*y-x*x*sin(x); } double fx(double x,double y){ return -2*y/(x*x)-2*x*sin(x)-x*x*cos(x); } double fy(double x,double y){ return 2/x; } double tstep(double x,double y){ double t=f(x,y); return y+h*(t+h/2*(fx(x,y)+fy(x,y)*t)); } int main(){ double x,y; y=cos(1); int j; for(j=0;j<1024;j++){ x=1+j*h; y=tstep(x,y); } x=1+j*h; double ye=exacty(x); printf("x=%22.14e\n",x); printf("yapprox=%22.14e\n",y); printf("yexact=%22.14e\n",ye); printf("yerror=%22.14e\n",fabs(y-ye)); return 0; }