📜蛛网图用例:Julia和Python蛛网图轨道图庞加莱截面曲面确定性非线性系统

对于函数 f 和起始点 x,您可以照常绘制 (x, f(x))。 然后,由于 f(x) 将是 x 的下一个值,因此您可以通过绘制从 (x, f(x)) 到 (f(x), f(x)) 的水平线将其转换为 x。 换句话说,通过移动到水平线与线 y = x 相交的位置,可以将先前的 y 值转换为 x 值。 然后从新的 x 上升到应用于新 x 的 f。 下面的 Python 代码使这一切变得明确。

    import matplotlib.pyplot as plt
     from scipy import cos, linspace

     def cobweb(f, x0, N, a=0, b=1):
 
         t = linspace(a, b, N)
         plt.plot(t, f(t), 'k')
         plt.plot(t, t, "k:")
         x, y = x0, f(x0)
         for _ in range(N):
             fy = f(y)
             plt.plot([x, y], [y,  y], 'b', linewidth=1)
             plt.plot([y, y], [y, fy], 'b', linewidth=1)
             x, y = y, fy

         plt.axes().set_aspect(1)
         plt.show()
         plt.close()
     cobweb(cos, 1, 20)

Untitled

生成从 x = 1 开始的 20 次余弦迭代的蛛网图。有一个固定点,蛛网图螺旋进入该固定点。接下来让我们看看不同 r 值时逻辑映射 f(x) = rx(1 – x) 的几次迭代。

     cobweb(lambda x: 2.9*x*(1-x), 0.1, 100)
     cobweb(lambda x: 3.1*x*(1-x), 0.1, 100)
     cobweb(lambda x: 3.1*x*(1-x), 0.558, 100)
     cobweb(lambda x: 4.0*x*(1-x), 0.1, 100)

如果 r ≤ 3,Logistic 映射也有一个稳定不动点。在下图中,r = 2.9。

Untitled

接下来我们设置 r = 3.1。我们从 x = 0.1 开始并收敛到两个吸引点。

Untitled

如果我们正好从其中一个吸引点开始,蛛网图就只是一个正方形。

Untitled

最后,当我们设置 r = 4 时,我们就处于混沌区域。

Untitled

https://embed.notionlytics.com/wt/ZXlKM2IzSnJjM0JoWTJWVWNtRmphMlZ5U1dRaU9pSlhiRWhvWlV4VVQxbHNjMlZYV2tKbU9URndaU0lzSW5CaFoyVkpaQ0k2SWpNMk5UY3lZekkyTTJSallqUXpabUU1WVRCaU56WTBOVFUwT1dObE56ZzVJbjA9