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; }