Apache Common Maths - 单变量函数求解器

Apache Common Maths - Univariate Function Solver

我正在尝试使用 apache-commons-math 求解器求解 "V" 的以下数学方程式。

等式:

V = log(X/ (V-1))

以下是MWE;

import org.apache.commons.math3.analysis.UnivariateFunction;
import org.apache.commons.math3.analysis.solvers.*;

public class Test {
    public static void main(String[] args) {

        UnivariateFunction function = v ->  v - Math.log( (9/(v-1)) );
        UnivariateSolver solver = new BrentSolver();
        double c = solver.solve(100, function, -10.0, 10.0, 0);
        System.out.println(c);
    }
}

但是,我收到以下错误;

线程 "main" org.apache.commons.math3.exception.NoBracketingException 中的异常:端点处的函数值没有不同的符号,端点:[-10, 10],值:[�, 10 ]

我已经在互联网上四处寻找解决方法,但到目前为止没有成功。我正在寻找 MWE 来解决 "V",任何帮助将不胜感激。

BrentSolver 仅适用于实数上的单变量函数。函数 f(v) = v - log(c / (v - 1)) 的实数支持是 (1, Infinity)。如果 v 小于或等于 1,则函数的计算结果为复数。

求解器失败,因为它试图在 -10 处计算函数并在值处接收 NaN。这会导致括号异常发生,因为 NaN 的符号不确定。

因此,为了使求解器工作,您必须提供包含在实数支持中的初始下限。大于 1 的值就足够了。