我一直在寻找网络搜索,但是,可能或者可能是我错过了正确的术语。
我有任意大小的标量数组......
array = [n_0, n_1, n_2, ..., n_m]
我还有一个功能f->x->y
,0<=x<=1
和y
来自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
答案 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中描述的机制。