我在尝试求解编程方程时遇到问题。
假设我有这行代码:
Math.round(((x / 5) + Math.pow(x / 25, 1.3)) / 10) * 10;
给定 x = 1000,结果为 320。
现在,给定结果,我该如何解这个方程?
想象一下,给定结果 320,我想获得解析该行代码的 x 的最小整数值。
/*320 =*/ Math.round(((x / 5) + Math.pow(x / 25, 1.3)) / 10) * 10;
由于 Math.Round,我遇到了一些困难。即使表达式是一个线性方程,Math.Round 给出的解比 x 的解还要多,所以我想要解的最小整数值。
请注意,x 是一个整数,如果我设置 x = 999,结果仍然是 320。
如果我继续降低 x,我可以看到 984(至少在 Chrome 64.0.3282.186 中)是这种情况下的正确答案,因为在该表达式/编程行中 x 的最小值等于 320。
最佳答案
使用 Math.round 求解方程只会引入边界条件。
如果:
Math.round(((x / 5) + Math.pow(x / 25, 1.3)) / 10) * 10 = 320
然后:
Math.round(((x / 5) + Math.pow(x / 25, 1.3)) / 10) = 32
两边除以 10。现在你有:
Math.round(expression) = 32
可以表示为不等式:
31.5 < expression < 32.4999..
等于 31.5 的表达式代表一个边界,等于 32.499.. 的表达式代表另一个边界。因此求解边界需要求解:
expression = 31.5 and expression = 32.49999...
((x / 5) + Math.pow(x / 25, 1.3))/10 = 31.5 and
((x / 5) + Math.pow(x / 25, 1.3))/10 = 32.4999
求解这两个值的 x 将给出 x 的有效值范围。现在这只是代数,我不会做:)
关于Javascript - 获取计算机方程的最小整数解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49375323/