簡體   English   中英

我如何遍歷 function

[英]How can I iterate over a function

我正在模擬森林火災,我的任務之一是計算 plot 樹木的密度與當前正在燃燒的空地的密度。 我有不同的部分,但是我需要幫助才能將它們放在一起,因為我不知道如何將我的代碼放在一起。 目前,我有我的初始條件

p, f = 0.5, 0.3
nx, ny = 100, 100
X = np.zeros((ny, nx))
adjacent = ((-1,0), (0,-1), (0, 1), (1,0))
E, T, F = 0, 1, 2
xvalues = [0]
yvalues = [0]

生成下一幀(火力分布)的我的 function 是

    def iterate(X):

    Xnew = np.zeros((ny, nx))
    for ix in range(1,nx-1):
        for iy in range(1,ny-1):
            if X[iy,ix] == E and np.random.random() <= p:
                Xnew[iy,ix] = T
            if X[iy,ix] == T:
                Xnew[iy,ix] = T
                for dx,dy in adjacent:
                    if X[iy+dy,ix+dx] == F:
                        Xnew[iy,ix] = F
                else:
                    if np.random.random() <= f:
                        Xnew[iy,ix] = F                    
    return Xnew
    print(Xnew)

我正在努力解決的問題是如何使用上述材料正確編寫以下內容,以便我可以 go 達到 Xn,其中 n 約為 1000

X1 = iterate(X)
X2 = iterate(X1)
X3 = iterate(X2) and so on

並為每次迭代計算

num_empty = (Xn == 0).sum()
num_tree = (Xn == 1).sum()
num_fire = (Xn == 2).sum()
density = num_tree/(num_fire+num_empty)

xvalues.append(i)
yvalues.append(density)


print(density)

任何幫助,將不勝感激!

我認為您需要遍歷 n 個整數的范圍而不是“函數”。

i = 0
_X = iteration(X)
num_empty = (_X == 0).sum()
num_tree = (_X == 1).sum()
num_fire = (_X == 2).sum()
density = num_tree / (num_fire + num_empty)
print(i, density)
xvalues.append(i)
yvalues.append(density)
n = 1000
for i in range(1, n):
    _X = iteration(_X)
    num_empty = (_X == 0).sum()
    num_tree = (_X == 1).sum()
    num_fire = (_X == 2).sum()
    density = num_tree / (num_fire + num_empty)
    print(i, density)
    xvalues.append(i)
    yvalues.append(density)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM