首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Apache通用数学中是否有一个静态函数来计算高斯函数?

在Apache通用数学中是否有一个静态函数来计算高斯函数?
EN

Stack Overflow用户
提问于 2014-03-27 15:08:33
回答 2查看 1K关注 0票数 2

在中有一个类平均值。我希望避免每次计算平均值时实例化一个对象。经过进一步的检查,我发现了一个类StatUtils,它有一个静态函数来计算double[]的平均值。现在我要计算高斯函数。我发现了一个高斯类。但是,我仍然不希望每次要计算函数时都实例化一个对象。是否有类似于静态函数的StatUtils类来计算高斯函数。

我考虑过实例化一个类型为Mean的全局对象,以获得对mean的访问,而不必实例化多个Mean对象,但是当我找到StatUtil时,我更喜欢这种方法。对于高斯问题,即使是全局对象也是不可接受的,因为构造函数需要平均值和σ参数。因此,我仍然需要为每个发行版实例化一个新对象。

我要找的是:

双y=高斯(x,平均值,σ);

总结一下。

  1. 是否有静态函数来计算高斯函数。
  2. 是否存在驱动Apache数学库设计的软件设计问题?使用静态函数的StatUtils或Java.Math方法是否有问题。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-27 16:08:39

只要您不需要与原始类相关联的带有导数和参数的基础结构,就可以提取相关的计算(它不包含任何真实的“状态”,而只依赖于您提到的三个参数),并将其放置到一个静态方法中。

根据原始的高斯类,它应该大致如下所示:

代码语言:javascript
复制
// 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);
}
票数 0
EN

Stack Overflow用户

发布于 2014-04-05 08:19:12

你想要概率密度函数PDF还是累积密度函数CDF。PDF由@Marco13 13的答案提供。在大多数统计应用中,CDF是最有趣的,它发现x的概率。

您可以做的是有一个org.apache.commons.math3.distribution.NormalDistribution实例,它意味着0和标准差1。

代码语言:javascript
复制
static NormalDistribution dist = new NormalDistribution();

static double density(double x, double mean, double sd) {
    double scaledx = (x-mean)/sd;
    return dist.density(scaledx);
}

static double cumulativeProbability(double x, double mean, double sd) {
    double scaledx = (x-mean)/sd;
    return dist.cumulativeProbability(scaledx);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22691690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档