Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 不从0开始的两个极限之间的缩放数的数学方程?_Math - Fatal编程技术网

Math 不从0开始的两个极限之间的缩放数的数学方程?

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到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,则变换不是线性的。因此,您需要寻找另一种类型的函数:


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