0

我有一组n, 数字{N_1, N_2.....N_n}

基本上我想对所有的总和做一些事情,使总和N_k的结果保持在之间(0,1)(比如除以一些f(N_1,N_2..N_n)),但我不想比较集合中的所有整数来找到最大值,我想保持答案“无量纲”因此f不能是(N_k)^2例如的总和。

有没有简单的功能f或其他方法来确保这一点?

编辑(0,infinity)我想要从到 的所有可能总和的映射(0,1)

f = sum将不起作用,因为它总是给出 1 的结果,因此与总和不成比例。

假设每个项都是以米为单位的长度...无量纲意味着操作的最终结果不应该有任何单位..例如 2m + 3m/ (2m + 1m) =5/3 没有单位。

但是......有相当明显的答案可能会起作用,例如f = sum +1 or f= sum +2等等。这些将随着总和而增长,并且对于总和的大值趋向于 1,那么问题可能更加主观,并且变成可以使用哪种其他类型的 f 以及哪种会为大值提供“最线性”类型的映射?

4

5 回答 5

4

atan(x/k)/(pi/2) 将所有 [0..infinity] 映射到范围 0..1:fooplot

选择一个数字 k 至少是您期望看到的最大数字的一半。输入 k 映射到 0.5。太大的输入将彼此如此接近并且 1 会在舍入中丢失。

于 2011-04-23T00:07:41.153 回答
4

但我想要一张尽可能线性的地图……最好是比反正切更线性的地图?

我不是数学家,但我的直觉是,映射 from (0, infinity)to的唯一方法(0, 1)是使用函数 f,该函数具有 f(x) 渐近到 1 的属性,因为 x 趋于无穷大。它不能是线性的。


根据@Alexandre 的评论,修改后的声明应该是:

  • 一个函数 f,它具有 f(x) 是常数或渐近常数的性质,因为 x 趋于无穷大。

  • 这意味着它不能在整个范围内是线性的……除了 f(x) = C 的情况。

但就像我说的……我不是数学家……他显然是。

于 2011-04-23T00:36:19.520 回答
3

如果您想要无量纲的东西,则必须采用f 正齐次(根据无量纲的定义)。这意味着对于每个 a > 0,

f(a * x_1, ..., a * x_n) = a * f(x_1, ..., x_n).

这确保了

sum(a * x_1, ... a * x_n) / f(a * x_1, ..., a * x_n)

不依赖于a(将乘法a视为“单位更改”)。换句话说,f当你均匀地缩放它的参数时,函数必须线性增长。

您提到的齐次函数的基本示例是:

f(x_1, ..., x_n) = n * max(x_1, ..., x_n)                                     (1)
f(x_1, ..., x_n) = sum(x_1, ..., x_n)                                         (2)

还有欧几里得范数

f(x_1, ..., x_n) = sqrt(n) * sqrt(sum(x_1^2, ..., x_n^2))                     (3)

p范数,对于p > 1

f(x_1, ..., x_n) = n^(p/(p-1)) * sum(x_1^p, ..., x_n^p) ^ (1/p)               (4)

作为奖励,它们是对称的,这也可能是您的要求之一。选择你想要的。还有其他的,但更复杂。

根据Hölder 不等式,这四个函数的比率sum / f始终介于 0 和 1 之间(这就是我选择有趣的归一化常数的原因)。请注意,选择(2)是一个微不足道的选择:结果始终为 1。

于 2011-04-23T01:28:00.470 回答
1

为什么不直接使用普通的双曲线?函数y=n/(x+n)将任何正数映射到范围 [1,0]。您选择的 n 越高,您的曲线就越平坦。如果您采用y=1-n/(x+n),它将在 [0,1] 范围内。因此,n 的选择将表明曲线接近其渐近线的速度。

在这里试试:http: //graph-plotter.cours-de-math.eu/

于 2011-04-23T01:28:03.833 回答
0

我不确定我是否能正确理解这个问题。如果您尝试找到将每个单独元素 N 1 ...N n映射到 (0,1) 的映射,您当然可以使用(如您建议的那样)

f(x) = x / max { N 1 , ..., N n }

但由于某种原因,您不想取所有元素中的最大值。您可以使用

f(x) = x / ∑<sub>i N i

但这并不一定映射任何元素,甚至接近 1。另一种选择是使用“soft max”函数,即

f(x) = e x / [e N 1 + ... + e N n ]

如果 x 的值不一定是集合的任何单个元素,而是子集和,那么显然

f(x) = x / ∑<sub>i N i

工作得很好,我们现在当 x 是你得到 1 的所有元素的总和时。

但是你说 x 可以趋于无穷大。如果集合 { N i } 是有限的并且保持不变,这真的会发生吗?

通常,如果您想从 (0,∞) 压缩到 (0,1),出于显而易见的原因,您不能使用线性函数来做到这一点。对于压缩函数 f : (0,∞) → (0,1),您希望 d/dx f > 0 并且必须 lim x→∞ d/dx f(x) = 0;f(0) = 0; lim x→∞ f(x) = 1。一些具有这些性质的函数是

1 - e -Cx对于任何正常数 C,和

2 / (1 + e -Cx ) - 1(Sigmoid 函数)。

于 2011-04-23T01:10:36.347 回答