我有两个我正在使用的功能。我正在尝试制作一个分叉图。我的第一个功能是使用matplotlib制作地图。
def print_bifurcation_map(initial,rmin,rmax,rstep,iterates,k):
xn_list = []
r_list = []
for r in np.linspace(rmin, rmax,rstep):
xn = []
xn.append(run_logistic(initial,r,iterates))
xn_list =xn_list + xn[-k:]
r_list = r_list + [r]*len(xn)
此代码执行的操作是获取一系列R并计算限制,因为x接近大数(迭代)。我们从列表中取出最后的k个数字。它调用一个函数run_logistic,它位于下面。
def run_logistic(xn,r,iterates):
iteration = 1
while iteration <= iterates:
xn1 = logistic_map(xn,r)
iteration = iteration + 1
xn = xn1
print xn
这是事情变得有点奇怪的地方。当我使用return并通过函数'print_bifurcation_map'调用时,它运行一次并追加一次。但是,如果我将返回xn更改为'print xn',这就是代码块中的内容,它似乎运行得更准确,尽管速度非常慢。
那么我在print_bifurcation_map定义或run_logistic函数中做错了什么。下面是logistic_map函数。
def logistic_map(xn,r):
xn1 = r*xn*(1-xn)
return xn1
答案 0 :(得分:1)
return返回该点的函数并输出返回的值。因此,在第一次迭代之后,您的值将被返回,然后就完成了。
你想用函数run_logistic
做什么来返回最终值或获得的所有值?
如果你想要最终值,那么 -
def run_logistic(xn,r,iterates):
iteration = 1
while iteration <= iterates:
xn1 = logistic_map(xn,r)
iteration = iteration + 1
xn = xn1
return xn # Put return outside while-loop to get final value
否则,如果您想要所有值,则创建一个列表以追加并返回该列表
def run_logistic(xn,r,iterates):
iteration = 1
xn_list = []
while iteration <= iterates:
xn1 = logistic_map(xn,r)
iteration = iteration + 1
xn = xn1
xn_list.append(xn)
return xn_list # Put return outside while-loop to get full list of values