09/06/28 17:41:06
>>146
#include <stdio.h>
#include <math.h>
double f(double x) { return x * exp(x) - 6; }
double fd(double x) { return (1 + x) * exp(x); }
/* 繰り返し回数、初期値は任意 */
int main(void) {
// 二分法
{
int i, n = 10;
double a = 0, b = 5, x;
for (i = 0; i < n; i++) {
x = (a + b) / 2;
if (f(x) < 0 && f(a) < 0) {
a = x;
} else {
b = x;
}
}
printf("%f\n", x);
}
// ニュートン法
{
int i, n = 10;
double x = 0;
for (i = 0; i < n; i++) {
x = x - f(x) / fd(x);
}
printf("%f\n", x);
}
return 0;
}