方程求解

题目描述
已知函数 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;
}
上一篇: Binary Search 下一篇: Mergesort for List
支持 makedown语法