【发布时间】:2016-06-29 00:39:56
【问题描述】:
我有以下代码:
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
我的问题是:对于每次迭代操作“x”的方式最恰当的算法/数学描述是什么?
【问题讨论】:
-
x正在根据自己之前的值进行更改。i只是一个计数器,计算应该重复多少次。 -
它给出了完美的结果。那里没有发现任何问题。
-
Further reading。从数学上讲,如果我们从
xirrational 开始,这会生成一个无限的不同随机数序列。显然,这不能通过浮点复制(因为它们都是理性的),并且该论文讨论了一些处理从浮点蔓延而来的错误的方法。 -
只是想知道为什么没有人提到该函数会迭代逻辑方程,对于
3.54<lambda<=4的大多数值,该方程会产生混乱的输出。这种行为的图形显示被称为费根鲍姆图。 -
谢谢你的评论,@FrankPuffer,这就是我最初的问题的一部分,但在我未能恰当地表达这个问题之后意识到,所以我接受了第一个明确正确回答我的问题。