如何找到循环所需的乘数?

时间:2012-01-21 00:23:13

标签: c++ math

#include <iostream>
using namespace std;
int main() {

  float result = 50.0f;
  float multiplier = 0.5f;
  float fixed_multiplier = 1.0f - multiplier * 0.001f;
  for (int i = 0; i < 1000; ++i) {
    result *= fixed_multiplier;
  }

  cout << result << endl; // 30.322 -- want approximately 25
}

在1000次迭代之后,我希望result等于multiplier*resultresult==25)。如何找到修改乘数(在fixed_multiplier中)以获得所需结果所需的内容?

2 个答案:

答案 0 :(得分:5)

您的for循环由此数学公式汇总:

result * fixed_multiplier ^ 1000 = result * multiplier

您可以solve this equation找到答案。

您可以使用pow函数在C中获得相同的结果:

fixed_multiplier = pow(multiplier, 0.001);

答案 1 :(得分:2)

您有以下关系:

result_out = result * fixed_multiplier^1000

其中^表示“权力”。简单的代数给你这个:

fixed_multiplier = (result_out / result) ^ (1/1000)