从一个范围到另一个范围的非线性映射

问题描述:

我有一个数学问题,我有点难住。我需要以非线性的方式将数字从一个范围映射到另一个范围。我手动从我正在尝试实现的一些示例数据中抽取数据。看起来如此。从一个范围到另一个范围的非线性映射

源 - 期望的结果

0 - 1

78 - 0.885

363 - 0.625

1429 - 0.3

3404 - 0.155

7524 - 0.075

11604 - 0.05

源编号范围从0到,理想情况下是一个无限数字,但如果它在数千的数十个位置停止某处,则是开心的。由此产生的数字是从1到0.它需要快速下降然后平稳。理想情况下不会达到零。

我知道从一个范围映射到另一个范围的标准方程。

y = ((x * origRange)/newRange) + newRangeOffset 

不幸的是,这并没有给我想要的结果。有没有一个优雅的非线性方程可以给我以后的结果?

+1

此问题可能属于http://math.stackexchange.com – perfectionist 2012-01-28 07:05:37

+0

你的_desired结果_是什么? – 2012-01-28 07:35:32

+0

@perfectionist下次注意,谢谢。 – 2012-01-28 09:02:44

f(x) = 620/(620 + x) 给出了一个答案精确到所有你的价值观

+0

非常感谢。我很想知道你是如何与620号一起来的? – 2012-01-28 09:06:08

+2

你想要一个函数f(x)趋于0,因为x =>无穷大。这个建议'f(x)= 1/x。'一个常见的转换方法是'f(x)= 1 /(x + c)',但是你也需要f(0)= 1, (x)= c /(x + c)'。我想说我在这一点上做了一些巧妙的微积分,但是我真的打开了excel并做了一些试验和错误迭代。顺便说一句,617对于c来说是一个更好的值。 – perfectionist 2012-01-28 09:17:12

+1

对曲线'f(x)= c /(x + c)'拟合的数据更为严格的就是将其重写为'1/f(x)= 1 + x/c' - 然后您可以至少使用 - 平方线性回归(几乎任何软件包都可以做到,甚至是Excel)来找到'c'的最佳值。然而,对某些数据盲目拟合曲线几乎不是一个好主意 - 如果不知道数值代表什么,就无法确定哪些关系会有意义(例如,这条曲线在'x = -c'处爆炸,并且我们无法知道这是否合适)。 – James 2012-01-28 11:55:37

至于建议here的2%以内,则可以使用多项式插值(在多个软件包存在)。

如果你想试试,我建议你去Wolfram Alpha并选择Polynomial Interpolation

This是一个使用你的观点的例子。