Как найти нужный множитель для цикла? - PullRequest
1 голос
/ 21 января 2012
#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*result (result==25). Как мне найти то, что мне нужно, чтобы изменить множитель (в fixed_multiplier), чтобы получить желаемый результат?

Ответы [ 2 ]

5 голосов
/ 21 января 2012

Ваш цикл for суммируется этим математическим уравнением:

result * fixed_multiplier ^ 1000 = result * multiplier

Вы можете решить это уравнение , чтобы найти свой ответ.

Вы можете получить тот же результат в C, используя функцию pow:

fixed_multiplier = pow(multiplier, 0.001);
2 голосов
/ 21 января 2012

У вас есть следующие отношения:

result_out = result * fixed_multiplier^1000

, где ^ обозначает «в силу».Простая алгебра дает вам это:

fixed_multiplier = (result_out / result) ^ (1/1000)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...