简单的数学公式验证(标准化0-100)

时间:2014-01-15 09:47:00

标签: math formula

如何规范化0到100之间的任何给定数字?

min为0且max没有边界(这是关键字的搜索量)。

由于我没有max。

的定义,

normalized = (x-min(x))/(max(x)-min(x))将无效

1 个答案:

答案 0 :(得分:1)

Arcus tangens

代数地,你可以从一些具有极点的函数开始,例如: tan,并使用其倒数atan。该倒数永远不会超过给定的极限,即在这种情况下为π/ 2。然后你可以使用那种

的公式
f(x) = 100 * 2/π * atan(x - min)

如果这不能为小输入产生“好”结果,您可能需要预处理输入:

f(x) = 100 * 2/π * atan(a*(x - min))

对于一些适当选择的a。使a大于1会增加值,而对于0 < a < 1,您会获得更小的值。根据评论,后者是你最想要的。

你甚至可以在那里添加一个力量:

f(x) = 100 * 2/π * atan(a*(x - min)^b) = 100 * 2/π * atan(pow(a*(x - min), b))

表示某些正参数b。通过调整两个参数,您可以更自由地根据需要调整功能。但是,要确定什么是合适的,您可能必须预先决定您对各种输入的期望值。有点像this question,虽然输入范围不是无限制的。

立体投影

如果您更喜欢几何方法:您可以将输入想象为 x 轴的正半部分,即从(0,0)到(∞,0)的光线。然后想象一个圆心,中心(0,1)和半径1坐在那条线上。如果将点(0,2)与光线上的任何点连接,则连接线将在另一个点与圆相交。这样,您可以将光线映射到圆的右半部分。现在从圆的中心看到的角度,或圆上的点的 y 坐标,或者像这样的任何其他有限值,正确地标准化输入和输出,你有一个功能符合您的要求。你也可以为此制定一个公式,atan可能会在那里发挥作用。