正确的方法来获得沿连续区间的具体数组值的加权平均值

时间:2013-10-16 11:05:09

标签: arrays intervals weighted-average

我一直在寻找网络搜索,但是,可能或者可能是我错过了正确的术语。

我有任意大小的标量数组......

array = [n_0, n_1, n_2, ..., n_m]

我还有一个功能f->x->y0<=x<=1y来自array的内插值。例子:

array = [1,2,9]

f(0)    = 1
f(0.5)  = 2
f(1)    = 9

f(0.75) = 5.5

我的问题是我想要计算某个时间间隔r = [a..b]的平均值,其中a E [0..1]b E [0..1],即我想将插值函数f->x->y推广到计算r的平均值。

我的思绪让我感到很沮丧。找到合适的权重。想象一下,我想计算f([0.2,0.8])

array     -->  1       |      2       |      9
[0..1]    -->  0.00   0.25   0.50   0.75  1.00
[0.2,0.8] -->        ^___________________^

后者是我想要计算平均值的值的范围。

计算这样的平均值在数学上是否正确?: *

          1 * (1-0.8)       <- 0.2 'translated' to [0..0.25]
        + 2 * 1
avg =   + 9 * 0.2           <- 0.8 'translated' to [0.75..1]
       ----------
            1.4             <-- the sum of weights

1 个答案:

答案 0 :(得分:0)

这看起来是正确的。

在您的示例中,您的间隔长度为0.6。在该时间间隔内,您的号码2占用(0.75-0.25)/0.6 = 0.5/0.6 = 10/12个空格。您的号码1占用(0.25-0.2)/0.6 = 0.05 = 1/12个空格,同样是您的号码9

总计10/12 + 1/12 + 1/12 = 1

为了更好的直觉,请考虑这样:问题是确定每个数组元素沿着一个区间覆盖多少空间。其余的只是填充http://en.wikipedia.org/wiki/Weighted_average#Mathematical_definition中描述的机制。