我寫了下面兩種功能:如何在python中使用矢量化方法?
def iterate_list(f, x0, n_iterations):
# initialise the list consisting of iterates of f
list = [x0]
# initialise x
x = x0
# iterate using for loop
for n in xrange(n_iterations):
x = f(x)
list.append(x)
# return the list consisting of iterates of f
return list
def lyapunov_exponent(f, df, x0, n_iterations):
from iterate_list import iterate_list
import numpy as np
# vectorise the list of iterates x0 to xn of f
vec = np.array(iterate_list(f, x0, n_iterations))
# calculate the sum of all the values of df for x0 to xn
s = sum(np.log(abs(df(vec))))
# calculate the mean as an estimate of the lyapunov exponent
return s/(n_iterations + 1)
和
f = k * x * (1-x)
df = k * (1 - 2*x)
但是現在我想改變的k
值的兩種功能,並設置了k = np.linspace(3.0, 4.0, 11)
。我如何修改函數,使其返回每個k值的Lyapunov指數列表?我現在遇到的困難是我想使用矢量化方法而不是循環。
請粘貼代碼** **直接進入你的問題。 – MarkyPython
@MarkyPython現在可以工作嗎? – Febday
@AimeeHe:不,你發佈了你的代碼的照片。我們無法將代碼圖片剪切並粘貼到代碼編輯器中運行。刪除圖片,並將代碼作爲文本發佈。 – Gerrat