gpt4 book ai didi

java - Apache通用数学中是否有静态函数来评估高斯函数

转载 作者:行者123 更新时间:2023-11-29 08:51:00 27 4
gpt4 key购买 nike

在 Apache commons Math 中有一个类 Mean。我想避免每次计算平均值时都实例化一个对象。经过进一步检查,我发现了一个 StatUtils 类,它有一个计算 double[] 平均值的静态函数。现在我想评估高斯函数。我找到了一个高斯类。但我还是宁愿不要每次要对函数求值时都实例化一个对象。有没有类似于StatUtils的静态函数的类,用于评估高斯函数。

我考虑过实例化一个 Mean 类型的全局对象来访问 mean 函数,而不必实例化多个 Mean 对象,但是当我发现 StatUtil 时,我更喜欢这种方法。对于高斯问题,即使是全局对象也是 Not Acceptable ,因为构造函数需要均值和西格玛参数。因此,我仍然需要为每个分布实例化一个新对象。

我正在寻找的是这样的东西:

double y = gaussian(x, mean, sigma);

总结。

  1. 是否有评估高斯函数的静态函数。
  2. 是否存在驱动 Apache Math 库设计的软件设计问题,而我没有注意到。使用静态函数的 StatUtils 或 Java.Math 方法是否有问题。

最佳答案

只要您不需要与原始类关联的具有导数和参数的基础设施,就应该可以提取相关计算(不包含任何真实的“状态”,而仅取决于您提到的三个参数)并将其放入单个静态方法中。

基于原来的高斯类,大致应该是这样的:

// Based on the Gaussian class from Apache Commons Math
public static double gaussian(double x, double mean, double sigma)
{
double norm = 1 / (sigma * Math.sqrt(2 * Math.PI));
double is = 1 / sigma;
double i2s2 = 0.5 * is * is;
double xMinusMean = x - mean;
return norm * Math.exp(-xMinusMean * xMinusMean * i2s2);
}

关于java - Apache通用数学中是否有静态函数来评估高斯函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22691690/

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