首先,简短的数学插曲值得您注意:
如果为0 < a < 4
,则逻辑函数 f(x) = ax(1-x)
将在其内部映射间隔[0,1]。这意味着可以玩迭代游戏;例如,如果a = 2,则初始值0.3变为0.42,然后为0.4872,依此类推。
随着参数的a
增加,二次函数f
在以下意义上变得更加复杂:
0 < a < 1
所有初始值都向0迭代。1 < a < 3
0变成排斥,但是有一个新的不动点(a-1)/ a吸引了所有迭代。3 < a < 1+sqrt(6)
新的固定点变得令人反感,但出现了两个吸引点的循环。3.44949... < a < 3.54409...
2个周期变得令人排斥,但出现了4个吸引点的周期。- 等等
费根鲍姆注意到,这些参数区间的长度在那越来越接近的速度下降4.6692...
时,费根鲍姆常数。奇妙的发现是,此2期分叉序列是任何函数(如二次抛物线)先增大后减小的普遍现象。这是有关混沌普遍性的第一批报告之一。
现在迎接挑战!编写最短的代码来计算 Feigenbaum常数,以达到您选择的精度。这里的重点不是通过编码您搜索过的数字来欺骗系统,而是实际上让计算机找到该值。作为参考,这是30位数的常数:
4.669201609102102990671853203821578
5
令我们惊讶的是,我们还没有一个挑战来计算这个常数,这是我们错过的一个好主意。最近似乎是在绘制后勤吸引子。我建议让代码采用最大误差或位数,并在该精度范围内产生常数(忽略超过某一点的机器限制)。或者可能会计算出第i个和第(i + 1)个加倍间隔之间的比率,这会收敛到常数。选择准确性的高尔夫球手过于模糊,并且无法进行硬编码。
—
xnor
我努力思考如何表达挑战。问题在于,要精确计算这是一件非常困难的事情,因此我认为人们将更加专注于实现滑动方法,而不是通过蛮力获得更多的数字。如果人们有不同的看法,我将更改规则。
—
罗德里戈·佩雷斯
您在寻找一种光滑的方法还是避免蛮力?请注意,默认情况下,对于代码高尔夫,我们不需要运行时间或空间上的任何限制,因此,针对简短内容进行优化时,答案往往效率很低。也许您正在寻找做出最快的代码或对复杂性进行限制的挑战?
—
xnor