为什么这个C++函数会产生混沌的输出

Why does this C++ function produce chaotic output?

本文关键字:混沌 输出 C++ 函数 为什么      更新时间:2023-10-16

我有以下代码:

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.200000.640000.921600.289010.821940.585420.970810.113340.401970.961560.147840.503920.999940.000250.000980.003940.015680.061740.231730.712120.820010.590360.967340.126380.441650.986380.053740.203420.648150.91221

我的问题是:对于每次迭代操作"x"的方式,最贴切的算法/数学描述是什么?

您在以下语句中使用了x x = lambda * x * (1-x); 。这样x每次迭代时值都会更改。

对于循环的每次迭代,变量x都会根据涉及旧值 x 的一些计算分配一个新值。变量i仅用于限制此计算重复的次数。

同样,您可以通过更简单的方式更改x的值(不使用i):

x = x + 1;

使用它代替x = lambda * x * (1-x);行,并观察值如何增加。

for 循环中的"i"被称为迭代变量,这意味着它将用作跟踪编号的计数器。 循环的迭代次数。

然而,"x"是你想在循环中使用中的变量。

您可以尝试在循环中同时打印 i 和 x 的值,以了解迭代的概念。