我想用python画一个二次映射的分岔图。基本上它是 x_{n+1}=x_n^2-c 的图,它应该看起来像 http://static.sewanee.edu/Physics/PHYSICS123/image99.gif
但我是新手,所以我不确定我是否正确。
我的代码
import numpy as n
import scipy as s
import pylab as p
xa=0.252
xb=1.99
C=n.linspace(xa,0.001,xb)
iter=100
Y=n.zeros((len(X),iteracje))
i=1
Y0=1
for Y0 in iter:
Y(i+1)=Y0^2-C
for Y0 in iter:
Y(i+1)=Y0^2-C
p.plot(C,Y)
p.show()
我的问题是我不知道如何正确编写这些 for 循环。
这是一些修改后的代码(下面部分解释)
import numpy as n
import scipy as s
import pylab as p
xa=0.252
xb=1.99
C=n.linspace(xa,xb,100)
print C
iter=1000
Y = n.ones(len(C))
for x in xrange(iter):
Y = Y**2 - C #get rid of early transients
for x in xrange(iter):
Y = Y**2 - C
p.plot(C,Y, '.', color = 'k', markersize = 2)
p.show()
首先,linspace 命令的格式错误。 help(s.linspace)
将让您深入了解语法。 前两个参数是开始和停止。三是值多少。 然后,我使 Y 成为与 C 长度相同的 numpy 数组,但其值均为 1。 您的 Y0 只是数字 1,它从未改变。 然后我做了一些迭代来克服初始条件。 然后对每个值进行了更多的迭代绘制。
要真正理解我所做的工作,您必须查看 numpy 如何处理数组的计算。