gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:11:51 25 4
gpt4 key购买 nike

我正在尝试使用 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 就足够了。

关于java - Apache Common Maths - 单变量函数求解器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46481762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com