如何求解 z = (((m / k) / j) / x) for x optimizing z towards 2ˣ
How to solve z = (((m / k) / j) / x) for x optimizing z towards 2ˣ
假设我有这些变量:
m
是以位为单位的可用内存量
k
是除法因子
j
是另一个除法因子,作为一个单独的变量保留,而不是与 k
合并
x
就是我们要计算的值。
z
是我们希望最接近 2^x
的值
然后我们有
let z = (((m / k) / j) / x)
例如,假设我们有这个:
m = 2000000
k = 5
j = 10
x = ?
z = ?
然后我们有
let z = ((2000000 / 5) / 10) / x
我想弄清楚 x
是什么,因为 z
应该尽可能接近 2 的 x
次方。我目前这样做的方法是插入数字并尝试使它们接近匹配。但我想知道一种以编程方式解决此问题的通用方法。但例如,我可能会尝试插入 x = 10
,它等于:
4000 = ((2000000 / 5) / 10) / 10
然后 2¹⁰ = 1024
接近 4000,但我不知道什么会更接近。尝试 x = 11
给出:
3636 = ((2000000 / 5) / 10) / 11
和2¹¹ = 2048
,所以x = 11
是更好的解决方案。
想知道如何以编程方式解决这个问题。我试图将方程式分解出来,但是我已经有一段时间没有这样做了,所以我不知道。
z = (((m / k) / j) / x)
x * z = (m / k) / j
j * (x * z) = m / k
k * (j * (x * z)) = m
...
现在有点迷茫,不知道如何达到这个目的:
f(k, j) = ... => [ x, z ]
一般来说,我正在尝试弄清楚如何以编程方式求解方程。只看一个实现就可以让我理解而不用太宽泛。
我目前所做的基本上是进入调试器并输入一些 JavaScript 来查找值,但必须有更好的方法。
你可以做一个 iterative search:
x = 1
best_error = infinity
best_x = 0
while True:
z = (((m / k) / j) / x)
error = abs(z - pow(2,x))
if error > best_error
return best_x
best_error = error
best_x = x
x = x+1
对于其他关系,有更好的方法来选择下一个 x
,但对于这个特定问题,线性搜索似乎很好。
假设我有这些变量:
m
是以位为单位的可用内存量k
是除法因子j
是另一个除法因子,作为一个单独的变量保留,而不是与k
合并
x
就是我们要计算的值。z
是我们希望最接近2^x
的值
然后我们有
let z = (((m / k) / j) / x)
例如,假设我们有这个:
m = 2000000
k = 5
j = 10
x = ?
z = ?
然后我们有
let z = ((2000000 / 5) / 10) / x
我想弄清楚 x
是什么,因为 z
应该尽可能接近 2 的 x
次方。我目前这样做的方法是插入数字并尝试使它们接近匹配。但我想知道一种以编程方式解决此问题的通用方法。但例如,我可能会尝试插入 x = 10
,它等于:
4000 = ((2000000 / 5) / 10) / 10
然后 2¹⁰ = 1024
接近 4000,但我不知道什么会更接近。尝试 x = 11
给出:
3636 = ((2000000 / 5) / 10) / 11
和2¹¹ = 2048
,所以x = 11
是更好的解决方案。
想知道如何以编程方式解决这个问题。我试图将方程式分解出来,但是我已经有一段时间没有这样做了,所以我不知道。
z = (((m / k) / j) / x)
x * z = (m / k) / j
j * (x * z) = m / k
k * (j * (x * z)) = m
...
现在有点迷茫,不知道如何达到这个目的:
f(k, j) = ... => [ x, z ]
一般来说,我正在尝试弄清楚如何以编程方式求解方程。只看一个实现就可以让我理解而不用太宽泛。
我目前所做的基本上是进入调试器并输入一些 JavaScript 来查找值,但必须有更好的方法。
你可以做一个 iterative search:
x = 1
best_error = infinity
best_x = 0
while True:
z = (((m / k) / j) / x)
error = abs(z - pow(2,x))
if error > best_error
return best_x
best_error = error
best_x = x
x = x+1
对于其他关系,有更好的方法来选择下一个 x
,但对于这个特定问题,线性搜索似乎很好。