#include <stdio.h>
#include <math.h>
int main(void) {
double a = 0.0, b = 4.0, m;
double fa, fb, fm;
double x = 3.0, fx, dfx, xn;
double min = 1e-6;
int ia = 0, ib = 0;
// 二分法
while (1) {
m = (a + b) / 2.0;
ia++;
if (fabs(fm
) < min
) break; if (fa * fm < 0.0) {
b = m;
fb = fm;
} else {
a = m;
fa = fm;
}
}
// ニュートン法
while (1) {
ib++;
xn = x - fx/dfx;
x = xn;
}
printf("二分法の反復回数 = %d\n", ia
); printf("ニュートン法の反復回数 = %d\n", ib
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CgppbnQgbWFpbih2b2lkKSB7CiAgZG91YmxlIGEgPSAwLjAsIGIgPSA0LjAsIG07CiAgZG91YmxlIGZhLCBmYiwgZm07CiAgZG91YmxlIHggPSAzLjAsIGZ4LCBkZngsIHhuOwogIGRvdWJsZSBtaW4gPSAxZS02OwogIGludCBpYSA9IDAsIGliID0gMDsKCiAgZmEgPSBjb3MoYS8yLjApOwogIGZiID0gY29zKGIvMi4wKTsKCiAgLy8g5LqM5YiG5rOVCiAgd2hpbGUgKDEpIHsKICAgIG0gID0gKGEgKyBiKSAvIDIuMDsKICAgIGZtID0gY29zKG0vMi4wKTsKICAgIGlhKys7CiAgICBpZiAoZmFicyhmbSkgPCBtaW4pIGJyZWFrOwogICAgaWYgKGZhICogZm0gPCAwLjApIHsKICAgICAgYiAgPSBtOwogICAgICBmYiA9IGZtOwogICAgfSBlbHNlIHsKICAgICAgYSAgPSBtOwogICAgICBmYSA9IGZtOwogICAgfQogIH0KCiAgLy8g44OL44Ol44O844OI44Oz5rOVCiAgd2hpbGUgKDEpIHsKICAgIGZ4ICAgPSBjb3MoeC8yLjApOwogICAgZGZ4ICA9IC0wLjUgKiBzaW4oeC8yLjApOwogICAgaWIrKzsKICAgIHhuID0geCAtIGZ4L2RmeDsKICAgIHggICAgICA9IHhuOwogICAgaWYgKGZhYnMoY29zKHgvMi4wKSkgPCBtaW4pIGJyZWFrOwogIH0KCiAgcHJpbnRmKCLkuozliIbms5Xjga7lj43lvqnlm57mlbAgPSAlZFxuIiwgaWEpOwogIHByaW50Zigi44OL44Ol44O844OI44Oz5rOV44Gu5Y+N5b6p5Zue5pWwID0gJWRcbiIsIGliKTsKCiAgcmV0dXJuIDA7Cn0K