零点存在定理
如果在[left,right]
区间中有解,用最小二乘法求方程近似解,mid=(left+right)/2
如果f(mid)>=0
那么方程的解在[left,mid]
,则需要将mid
给到右端点。
#include <iostream>
#include <cmath>
using namespace std;
const double eps=1e-4;
double a;
double f(double x){
return x+log(x)-a;
}
int main()
{
cin>>a;
double l=0,r=1e9;
while(r-l>eps){
double mid=(l+r)/2;
if(f(mid)>=0){
r=mid;
}else{
l=mid;
}
}
printf("%.4f\n",l);
} // namespace std;