Math golang模拟钟形曲线上的值

Math golang模拟钟形曲线上的值,math,go,Math,Go,我的数学有点初级,所以我为事先的任何假设道歉 我想获取存在于模拟钟形曲线上的值。我不想实际创建钟形曲线或绘制钟形曲线,我只想使用一个函数,给定一个输入值,它可以告诉我假设钟形曲线上对应的Y轴值 以下是完整的问题陈述: 我正在生成介于0.0和1.0之间的浮点值 0.50表示钟形曲线上的2.0,这是最大值。0.50的值开始在钟形曲线上下降,因此,例如,0.40和0.60是相同的,可能类似于1.8。在这个例子中,1.8是任意选择的,我想知道如何调整这个“梯度” 现在我正在做一个非常粗糙的实现,例如,对

我的数学有点初级,所以我为事先的任何假设道歉

我想获取存在于模拟钟形曲线上的值。我不想实际创建钟形曲线或绘制钟形曲线,我只想使用一个函数,给定一个输入值,它可以告诉我假设钟形曲线上对应的Y轴值

以下是完整的问题陈述:

我正在生成介于0.0和1.0之间的浮点值

0.50表示钟形曲线上的2.0,这是最大值。<0.50和>0.50的值开始在钟形曲线上下降,因此,例如,0.40和0.60是相同的,可能类似于1.8。在这个例子中,1.8是任意选择的,我想知道如何调整这个“梯度”

现在我正在做一个非常粗糙的实现,例如,对于任何大于0.40和小于0.60的值,函数返回2.0,但是我想“平滑”这一点,并获得对下降/梯度的更多“控制”


关于如何在Go

高斯函数中实现这一点,有什么想法吗 具有钟形曲线形状。实施示例:

package main
import (
    "math"
)

const (
    a = 2.0 // height of curve's peak
    b = 0.5 // position of the peak
    c = 0.1 // standart deviation controlling width of the curve 
            //( lower abstract value of c -> "longer" curve)
)

func curveFunc(x float64) float64 {
    return a *math.Exp(-math.Pow(x-b, 2)/(2.0*math.Pow(c, 2)))
}

有关公式,请参见。使用math.Exp进行幂运算。太棒了!这正是我要找的!我玩了一会儿。我很难理解c。我希望curveFunc对x=0.0和x=1.0都返回0.0,所以我应该尝试不同的c值,直到得到它?什么决定了曲线的“斜率”?它落在两端的速度有多快?s/math.Powmath.E,/math.Exp/嗯,我的描述不好。对于较长的曲线,我的意思是下降速度较慢。例如,对于c=1,曲线下降速度将快于c=0.1。这个函数永远不会达到0,但是由于float64不能表示i非常小的分数,您可以使用这样的c,函数在x=0和x=1时实际上返回0,但是您必须使用c值。但我向你推荐另一种解决方案。您可以将峰值移动到3A=3。然后,当curveFunc0==1时,从正则方程计算c。得到c时,只需从函数中减去1。2.0*math.Powc,2必须在括号中:返回a*math.Exp-math.Powx-b,2/2.0*math.Powc,2。c不是一个抽象值,它是半个最大值的全宽度-