X+ln(X)=0 用迭代法怎么求X?
X+ln(x)=0 用迭代法怎么求?
程序代码:#include<stdio.h>
#include<math.h>
double f(double x) {
return x + log(x);
}
int main() {
double l = exp(-1), r = 1, x = (l + r) / 2;
// 以下使用二分迭代法求解方程
while (fabs(f(x)) > 1.0e-8) {
if (f(x) > 0) {
r = (l + r) / 2;
}
if (f(x) < 0) {
l = (l + r) / 2;
}
// 以下代码防止在迭代过程中偏离方程的解
while (f(l) > 0) {
l -= (r - l) / 2;
}
while (f(r) < 0) {
r += (r - l) / 2;
}
x = (l + r) / 2;
}
printf("x = %.10lf\nln(x) = %.10lf", x, log(x));
return 0;
}