gpt4 book ai didi

java - 使用 Apache Commons 计算值的 Log 和 Exp

转载 作者:行者123 更新时间:2023-12-01 18:30:01 25 4
gpt4 key购买 nike

我有一个死亡风险计算,需要确定自然对数和exp衰减。下面详细介绍该方法。我很想知道为什么计算 exp 等的方法不是静态的,以及如果我使用单个 Log (或 Exp)对象作为多个参数,是否存在计算不正确的风险。也就是说我可以使用Log的单个实例来计算Log(2.3)和Log(567)吗?

public Double getROD(Integer score) {

Double beta0 = new Double(-7.7631);
Double beta1 = new Double(0.0737);
Double beta2 = new Double(0.9971);

Log log = new Log();
Exp exp = new Exp();

Double logit = beta0 + (beta1 * score) + (beta2 * log.value(new Double(score + 1)));
Double mortality = exp.value(logit) / (1 + exp.value(logit));

return mortality;
}

我尝试过以下方法:

Log log = new Log();

Double arg1 = log.value(new Double(12.3));
Double arg2 = log.value(new Double(29.12));

System.out.println(arg1.toString() + " : " + arg2.toString());

结果

2.509599262378372 : 3.3714252233284854

但是,这是否是所有用途的预期行为仍然存在疑问。

最佳答案

ExpLog等类不存储状态。它们的 value 方法不是静态的,是为了实现 UnivariateFunction 接口(interface)。所以,是的,您可以安全地重用这些对象。

UnivariateFunction 接口(interface)的好处之一是您可以编写一个接受此类对象的函数,并且用户可以通过传入适当的函数对象来参数化您的函数。这个概念叫做higher-order functions (如果你像我一样来自 FP 阵营)或 strategy pattern (如果您来自OOP阵营)。

关于java - 使用 Apache Commons 计算值的 Log 和 Exp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24644447/

25 4 0