#include #include /* set logscale x set logscale y plot "richard.dat" using 1:3 pt 5 ps 2,x**6 lc 0 */ double f(double x){ return sqrt(x); } double df(double x){ return 1/(2*sqrt(x)); } double adf(double x,double h){ return (f(x+h)-f(x-h))/(2*h); } double radf(double x,double h){ return 4.0/3*adf(x,h/2)-1.0/3*adf(x,h); } double r2adf(double x,double h){ return (16*radf(x,h/2)-radf(x,h))/15; } double Eh(double x,double h){ return fabs(r2adf(x,h)-df(x)); } int main(){ double h=1; for(int i=0;i<20;i++){ printf("%g %22.15e %22.15e\n", h,adf(2,h),Eh(2,h)); h/=2; } return 0; }