#include <stdio.h>
#include <math.h>
/* 収束条件 */
#define EPS 1.0E-5
/* プロトタイプ宣言 */
double f(double x); /* f(x) */
double d(double x); /* d(x)=f'(x) */
int main()
{
int i; /* ループカウンタ */
double x0; /* 初期値 */
double x1; /* 解の近似値 */
i = 0;
x0 = 0.89;
while( fabs(f(x0)) > EPS )
{
x1 = x0 - f(x0)/d(x0);
x0 = x1;
i++;
}
printf("解は %f (回数=%d)\n",x0 ,i);
return 0;
}
double f(double x)
{
return sin(x)-pow(x,2.0);
}
double d(double x)
{
return cos(x)-2*x;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiAKLyog5Y+O5p2f5p2h5Lu2ICovCiNkZWZpbmUgRVBTIDEuMEUtNQogCi8qIOODl+ODreODiOOCv+OCpOODl+Wuo+iogCAqLwpkb3VibGUgZihkb3VibGUgeCk7IC8qIGYoeCkgKi8KZG91YmxlIGQoZG91YmxlIHgpOyAvKiBkKHgpPWYnKHgpICovCgppbnQgbWFpbigpCnsKCWludCBpOyAvKiDjg6vjg7zjg5fjgqvjgqbjg7Pjgr8gKi8KCWRvdWJsZSB4MDsgLyog5Yid5pyf5YCkICovCglkb3VibGUgeDE7IC8qIOino+OBrui/keS8vOWApCAqLwoJCglpID0gMDsKCXgwID0gMC44OTsKCgl3aGlsZSggZmFicyhmKHgwKSkgPiBFUFMgKQoJewoJCXgxID0geDAgLSBmKHgwKS9kKHgwKTsKCQl4MCA9IHgxOwoJCWkrKzsKCX0KCXByaW50Zigi6Kej44GvICVmICjlm57mlbA9JWQpXG4iLHgwICxpKTsKCSAKCXJldHVybiAwOwp9CgkgCgkgZG91YmxlIGYoZG91YmxlIHgpCgl7CgkJcmV0dXJuIHNpbih4KS1wb3coeCwyLjApOwoJfQoJIAoJZG91YmxlIGQoZG91YmxlIHgpCgl7CgkJcmV0dXJuIGNvcyh4KS0yKng7Cgl9Cg==