алгоритм — Почему эта функция C ++ производит хаотический вывод?

У меня есть следующий код:

int main ( int argc, char **argv ){
double lambda = 4;
double x = .2;

for ( int i=1; i<=30; i++ )
{
printf( "%.5f \n", x );
x = lambda * x * (1-x);
}
}

Это выводит следующее:

0,20000
0,64000
0,92160
0,28901
0,82194
0,58542
0,97081
0,11334
0,40197
0,96156
0,14784
0,50392
0,99994
0,00025
0,00098
0,00394
0,01568
0,06174
0,23173
0,71212
0,82001
0,59036
0,96734
0,12638
0,44165
0,98638
0,05374
0,20342
0,64815
0,91221

Мой вопрос: каково наиболее подходящее алгоритмическое / математическое описание способа манипулирования «х» на каждой итерации?

0

Решение

Ты используешь x в следующем заявлении x = lambda * x * (1-x); , Сюда x значение изменяется на каждой итерации.

2

Другие решения

Для каждой итерации цикла переменная x присваивается новое значение на основе некоторого расчета, включающего старое значение x, Переменная i используется просто для ограничения количества повторений этого вычисления.

Точно так же вы можете изменить значение x (без использования i) гораздо проще:

x = x + 1;

Используйте это вместо x = lambda * x * (1-x); линии и наблюдать, как значение увеличивается.

2

«I» в цикле for известно как переменная итерации, что означает, что она будет использоваться в качестве счетчика для отслеживания no. итераций цикла.

Принимая во внимание, что «х» является переменной, с которой вы хотите играть в цикле.

Вы можете попробовать напечатать оба значения i и x в цикле, чтобы понять концепцию итерации.

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector