#include <stdio.h>
#include <math.h>
double f(double x); /*関数 f(x)*/
double d(double x); /*f(x)の導関数;d(X)*/
int main()
{
double x0=2.0; /*Newton方を適用するにあたっての初期値*/
double x1; /*(x=x0における接線とx軸との交点)*/
double eps=0.0001; /*=0の理想値*/
int i; /*ループカウンタ*/
for(i
=1; fabs(f
(x0
))>eps
; i
++) {
x1=x0-f(x0)/d(x0);
x0=x1;
}
return 0;
}
double f(double x)
{
double fx;
fx = x*x*x-2.0;
return fx;
}
double d(double x)
{
double dx;
dx = 3.0*x*x;
return dx;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+Cgpkb3VibGUgZihkb3VibGUgeCk7ICAgICAgICAgIC8q6Zai5pWwIGYoeCkqLwpkb3VibGUgZChkb3VibGUgeCk7ICAgICAgICAgLypmKHgp44Gu5bCO6Zai5pWwO2QoWCkqLwoKaW50IG1haW4oKQp7Cglkb3VibGUgeDA9Mi4wOyAgICAgICAgICAvKk5ld3RvbuaWueOCkumBqeeUqOOBmeOCi+OBq+OBguOBn+OBo+OBpuOBruWIneacn+WApCovCglkb3VibGUgeDE7ICAgICAgICAgICAgICAvKih4PXgw44Gr44GK44GR44KL5o6l57ea44GoeOi7uOOBqOOBruS6pOeCuSkqLwoJZG91YmxlIGVwcz0wLjAwMDE7ICAgICAgLyo9MOOBrueQhuaDs+WApCovCglpbnQgaTsgICAgICAgICAgICAgICAgIC8q44Or44O844OX44Kr44Km44Oz44K/Ki8KCQoJZm9yKGk9MTsgZmFicyhmKHgwKSk+ZXBzOyBpKyspCgl7CgkJcHJpbnRmKCIlZOWbnuebrjpmKHgwKT0lZlxuIiwgaSwgZmFicyhmKHgwKSkpOwoJCXgxPXgwLWYoeDApL2QoeDApOwoJCXgwPXgxOwoJfQoJcHJpbnRmKCLop6Pjga8lZiIsIHgwKTsKCXJldHVybiAwOwp9Cgpkb3VibGUgZihkb3VibGUgeCkKewoJZG91YmxlIGZ4OwoJZnggPSB4KngqeC0yLjA7CglyZXR1cm4gZng7Cn0KCgpkb3VibGUgZChkb3VibGUgeCkKewoJZG91YmxlIGR4OwoJZHggPSAzLjAqeCp4OwoJcmV0dXJuIGR4Owp9