c# - 如何从 Math.Round 语句中查找变量
问题描述
我们在代码中有一个计算,可以计算一些这样的调整值
a = Math.Round(b, 3) + Math.Round(b * c1, 3) + Math.Round(b * c2, 3);
问题是现在我需要做反向计算。我有 , & 的值a
,c1
并且c2
需要找到 的值b
。那可能吗?
解决方案
假设 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))
推荐阅读
- python - Python 相当于 R 的 save()?
- ios - 将bottomLayoutGuide转换为最新的iOS,safeAreaLayoutGuide
- javascript - 选择具有所需灵活性的框架
- angular - 从服务器加载的 Angular AppConfig,但在模块设置中需要
- sql - 如何识别再次入院?
- ios - 如何绕过 Xcode 代码签名证书
- webpack - webpack4 js脚本执行顺序
- javascript - 使用 create-react-app 的环境变量路径
- python - python 无法让套接字服务器在线程中侦听
- angular - 快速更改路线会触发 ExpressionChangedAfterItHasBeenCheckedError (matsnackbar)