我们在代码中进行了计算,可以像这样计算一些调整后的值
a = Math.Round(b, 3) + Math.Round(b * c1, 3) + Math.Round(b * c2, 3);
问题在于,现在我需要进行逆向计算。我有a
,c1
和c2
的值,需要找到b
的值。有可能吗?
答案 0 :(得分:1)
假设b,c1和c2均为正,则您具有递增函数,因此可以对其进行二进制搜索以找到b。可能存在直接获得b的公式,但这也应该足够快。这是一个python示例:
c1 = 0.0125
c2 = 0.0517
a = 0.155
def op(b, c1, c2):
return round(b, 3) + round(b * c1, 3) + round(b * c2, 3)
minb = 0
maxb = a
while (minb + 0.00001 < maxb):
b = (minb + maxb) / 2
estimate = op(b, c1, c2)
if estimate > a:
maxb = b
elif estimate < a:
minb = b
else:
break
print(b, op(b, c1, c2))