2015-11-27 37 views
0

我有两个我正在使用的函数。我正在尝试制作分岔图。我有第一个功能是使用matplotlib制作地图。while循环在执行期间执行一次,在打印期间运行正常[python]

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) 

什么这个代码是采取一系列Rs的和作为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 

这里是事情变得有点怪异的地方。当我通过函数'print_bifurcation_map'使用return和call时,它会运行一次并追加一次。但是,如果我将return xn更改为现在代码块中的'print xn',它似乎运行得更正确,尽管速度非常缓慢。

那么,我在print_bifurcation_map定义或run_logistic函数中做了什么不正确。以下是logistic_map函数。

def logistic_map(xn,r): 
    xn1 = r*xn*(1-xn) 
    return xn1 

回答

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 
+0

嘿,谢谢。我没有意识到退出功能。我需要这个xn_list的所有值,所以我将不得不返回一个附加列表。谢谢你的帮助。 – user2723240