为什么这个C++函数会产生混沌的输出
Why does this C++ function produce chaotic output?
我有以下代码:
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 的值,以了解迭代的概念。
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- AES加密到解密未正确输出
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- C++格式化输出问题
- 将值从二维数组输出到文本文件
- 集合上的输出迭代器:assign和increment迭代器
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 为什么rk4.do_step不输出C++中的初始条件
- 输出没有重复元素的动态数组(收缩数组)C++
- 为什么这个C++函数会产生混沌的输出