混沌迭代现象的观察

2021/4/19 10:56:29

本文主要是介绍混沌迭代现象的观察,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

混沌系统源于迭代,某些迭代函数会导致混沌现象的产生,迭代是一个确定的系统,但是也会产生仿佛随机系统一样的现象。例如人口模型常用的Logistic方程。

$$x_{t+1} = \alpha \times x_t (1-x_t) $$

$$在迭代参数 \alpha 取不同值的时候会产生不同得迭代结果,可能收敛于确定值,也可能产生混沌线性。$$

以Python程序来进行测试

$$其中 alpha \in (0, 4) , x \in (0, 1)$$

 

import numpy as np
import matplotlib.pyplot as plt


# \sigma \in (0, 4)
# x0 \in (0, 1) 无影响
def logistic_function(x, sigma):
    return sigma*x*(1-x)


def getSeries(x0, sigma, length):
    res = np.zeros(length)
    res[0] = x0
    for i in range(1, len(res)):
        res[i] = logistic_function(res[i-1], sigma)
    return res


def showPlot():
    length = 20

    # fig = plt.figure(figsize=(9, 9))
    # # 布局, 间隔
    # fig.subplots_adjust(left=0, right=1, bottom=0, top=1, hspace=0.02, wspace=0.02)
    for i in range(25):
        # ax = fig.add_subplot(5, 5, i + 1, xticks=[], yticks=[])
        # ax.scatter(range(length), getSeries(0.1 + 0.2*int(i/5), 0.3+0.5*int(i % 5), length), color="blue")
        # ax.text(2, 2, "x0=%.2f, sigma=%.2f" % (0.1+0.2*int(i/5), 0.3+0.5*int(i % 5)))

        plt.scatter(range(length), getSeries(0.1+0.2*int(i/5), 0.3+0.5*int(i % 5), length), color="blue")
        plt.title("x0=%.2f, sigma=%.2f" % (0.1+0.2*int(i/5), 0.3+0.5*int(i % 5)))
        plt.savefig("chaosImgs2/x0=%.2f, sigma=%.2f.png" % (0.1+0.2*int(i/5), 0.3+0.5*int(i % 5)), dpi=300, format='png')
    # plt.show()


if __name__ == '__main__':
    showPlot()

 

程序画出不同迭代参数和不同初始值的25张图,并保存本地,结果如下(注释部分是画5行5列的图)

 

$$结果可见, \sigma 越大越趋于混沌 $$



这篇关于混沌迭代现象的观察的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程