#include <stdio.h>
#include <math.h>
#define EPSL 1e-6
double func(double x, double n) {
return x * x - n;
}
double f(double x) {
return 2 * x;
}
double NewTon(double (*F)(double, double), double(*f)(double), double n) {
double x = 1.0;
while (fabs(F(x, n)) > EPSL) {
x -= F(x, n) / f(x);
}
#undef EPSL
return x;
}
double my_sqrt(double n) {
return NewTon(func, f, n);
}
int main() {
double n;
while (~scanf("%lf", &n)) {
printf("sqtr(%g) = %g\n", n, sqrt(n));
printf("my_sqrt(%g) = %g\n", n, my_sqrt(n));
}
return 0;
}
牛顿迭代
最新推荐文章于 2024-07-26 17:03:47 发布