Math 不从0开始的两个极限之间的缩放数的数学方程?
例如,我有一个介于1到100之间的数字,我需要将其缩放到20到80之间 示例:Math 不从0开始的两个极限之间的缩放数的数学方程?,math,Math,例如,我有一个介于1到100之间的数字,我需要将其缩放到20到80之间 示例: 1 scales to 20 100 scales to 80 50 scales to 50 您正在寻找一个函数f,这样: f(x) = ax +b f(1)=20 f(100)=80 然后 你会得到: 99a+20=80 then a =60/99=20/33 and b = 20 - 20/33 = 20*(32/33) 有关更多信息,请查看此问题: 注意:如果50缩放到40,则变换不是线性的。因此,
1 scales to 20
100 scales to 80
50 scales to 50
您正在寻找一个函数f,这样:
f(x) = ax +b
f(1)=20
f(100)=80
然后
你会得到:
99a+20=80
then a =60/99=20/33
and b = 20 - 20/33 = 20*(32/33)
有关更多信息,请查看此问题:
注意:如果50缩放到40,则变换不是线性的。因此,您需要寻找另一种类型的函数:
f(x)=ax**2+bx+c你需要更具体地说明你在寻找什么。您给出的规则不会产生一致的线性缩放 对于,如果它是线性的:
(1, 20) is on the line
(100, 80) is one the line
坡度为:
(80 - 20) / (100 - 1) = 60 / 99
线路是
y - 20 = (60 / 99) * (x - 1)
然后:
然后,测试x=50
:
y = (60 / 99) * (50 - 1) + 20 = 2940 / 99 + 20 != 40
因此,不存在这种线性缩放 这个问题应该在这个论坛上被问到,是专门针对编程的。为什么
50
会扩展到40
?如果这是一个线性变换,结果应该在50
左右。我投票结束这个问题,因为它是关于数学,而不是编程的。对不起,这是一个错误,50比50!我用了你的线性方程,效果很好!谢谢您的帮助。@user468384不客气,您可以查看我发布的链接,了解更一般的公式。请注意,50不能精确地缩放到50,因为您没有将(0100)缩放到(20,80),而是将(1100)缩放到(20,80)。对不起,50缩放是一个错误,它将缩放到50!好吧,它仍然不是线性的(但它很接近(线性的将其缩放到49.6969…)。如果你告诉我你可以缩放到最接近的整数,那么我们就没事了。使用我刚才解释的方法来发现控制比例关系的线性方程。
y = (60 / 99) * (x - 1) + 20
y = (60 / 99) * (50 - 1) + 20 = 2940 / 99 + 20 != 40