#include #include #define T 4.0 double f(double y){ return y*cos(y); } double df(double y){ return cos(y)-y*sin(y); } double taylor2(int N,double y){ double h=T/N; for(int k=1;k<=N;k++){ y=y+f(y)*h+df(y)*f(y)*h*h/2; } return y; } double euler(int N,double y){ double h=T/N; for(int k=1;k<=N;k++){ y=y+f(y)*h; } return y; } int main(){ double yold=1; for(int n=4;n<=1024*1024;n=n*2){ double y=taylor2(n,1.0); printf("n=%d yn=%g yn-yold=%.14e\n", n,y,y-yold); yold=y; } return 0; }