题目描述
已知函数 y = e^x+ln(x)-1,实现函数
#include "solve.h"
long double solve(long double y)
{
// here
}
对于传入的y,返回x值
要求f(x)与y的误差小于1e-6,其中 0 < y < 1e10
Yizuodi的答案
#include "solve.h"
#include <cmath>
using namespace std;
long double f(long double x)
{
return log(x)+exp(x)-1;
}
long double solve(long double y)
{
long double bottom=0.5;
long double top=24;
long double x=(bottom+top)/2.0;
while(abs(f(x)-y)>1e-6)
{
if(f(x)<y){bottom=x;}
else{top=x;}
x=(bottom+top)/2.0;
}
return x;
}