有没有ruby库,它支持我找出x值的样本是线性增长、多项式增长、指数增长还是对数增长?
像这样:
[1,2,3,4].linear? => true
[1,2,4,8].exponential? => true它应该支持一种模糊性,即如果样本包含1,2,2.8,4,然而,线性关系应该被识别。
非常感谢。
发布于 2014-05-19 21:32:44
我不知道是否有一个,但它很简单,可以写:
class Array
def linear?
array = self.sort
fuzzy_factor = 0.1 * array[0] # just threw this in as an example fuzzy factor, take your pick.
difference = array[1]-array[0]
!array.each_with_index.reject {|x,i|
i == 0 ||
x < array[i-1] + difference + fuzzy_factor &&
x > array[i-1] + difference - fuzzy_factor }.any?
end
def exponential?
array = self.sort
fuzzy_factor = 0.1 * array[0]
factor = array[1]/array[0]
!array.each_with_index.reject { |x,i| i==0 ||
x <array[i-1]*(factor+fuzzy_factor) &&
x>array[i-1]*(factor-fuzzy_factor)}.any?
end
end
[1,2,3,4].linear?
# true
[1,2,3,5].linear?
#false
[2,4,8,16].exponential?
#true
[2,4,8,16,3].exponential?
#false编辑:增加模糊因子。我只放了一个随机的,根据需要改变。
https://stackoverflow.com/questions/23737369
复制相似问题