Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 要更新的数据列表_Python_List_Matrix_Histogram_Power Law - Fatal编程技术网

Python 要更新的数据列表

Python 要更新的数据列表,python,list,matrix,histogram,power-law,Python,List,Matrix,Histogram,Power Law,我在更新“reversalsize”列表时遇到问题。每次都应使用“反转”进行更新。 我需要做一个图表来检查幂律行为。 这是一个简单的细胞自动机,模拟沿着通道的雪崩行为。 我总是在列表中得到相同的值,相反,它应该是一个递增的数字 reversal=0 reversalsize=[] def avalanche(M,KH,pmt): p_scale_factor = 5 global reversal M_av = M.copy()

我在更新“reversalsize”列表时遇到问题。每次都应使用“反转”进行更新。 我需要做一个图表来检查幂律行为。 这是一个简单的细胞自动机,模拟沿着通道的雪崩行为。 我总是在列表中得到相同的值,相反,它应该是一个递增的数字

reversal=0           
reversalsize=[]      
def avalanche(M,KH,pmt):          
p_scale_factor = 5      
global reversal
M_av = M.copy()
M_av_app = M.copy()
for i in range(nx-1):
    if i<nx/3:       
        for j in range(ny-1):
            ix = i+1
            iy = j+1
            p_drop = np.tanh((M[ix,iy]-pmt)/p_scale_factor)   
            rand_drop = np.random.random()
            if rand_drop > 1-p_drop:
                if j==0:    
                    if KH[ix,iy] > pmt:
                        av_mass = (M[ix,iy]-pmt)*ppe                  
                        M_av[ix+1,iy] = M_av_app[ix+1,iy]+3*av_mass/4
                        M_av[ix+1,iy+1] = M_av_app[ix+1,iy+1]+av_mass/4
                        M_av[ix,iy] = M_av_app[ix,iy]-av_mass


                elif 0<j<ny-3:
                    if KH[ix,iy] > pmt:
                        av_mass = (M[ix,iy]-pmt)*ppe
                        M_av[ix+1,iy-1] = M_av_app[ix+1,iy-1]+av_mass/4
                        M_av[ix+1,iy] = M_av_app[ix+1,iy]+av_mass/2
                        M_av[ix+1,iy+1] = M_av_app[ix+1,iy+1]+av_mass/4
                        M_av[ix,iy] = M_av_app[ix,iy]-av_mass

                elif j==ny-3:
                    if KH[ix,iy] > pmt:
                        av_mass = (M[ix,iy]-pmt)*ppe
                        M_av[ix+1,iy] = M_av_app[ix+1,iy]+3*av_mass/4
                        M_av[ix+1,iy-1] = M_av_app[ix+1,iy-1]+av_mass/4
                        M_av[ix,iy] = M_av_app[ix,iy]-av_mass 

                M_av_app = M_av
                reversal +=1
                #print(reversal)
    else:
        ilim1 = i-nx/3        
        ilim2 = nx-(i-nx/3)   
        for j in range(ny-1):
            ix = i+1
            iy = j+1
            p_drop = np.tanh((M[ix,iy]-pmt)/p_scale_factor)
            rand_drop = np.random.random()
            if rand_drop > 1-p_drop:
                if j<ilim1:
                    pass
                if j==ilim1:
                    if KH[ix,iy] > pmt:
                        av_mass = (M[ix,iy]-pmt)*ppe
                        M_av[ix+1,iy+1] = M_av_app[ix+1,iy+1]+av_mass
                        M_av[ix,iy] = M_av_app[ix,iy]-av_mass 

                elif ilim1<j<ilim2:
                    if KH[ix,iy] > pmt:
                        av_mass = (M[ix,iy]-pmt)*ppe
                        M_av[ix+1,iy-1] = M_av_app[ix+1,iy-1]+av_mass/4
                        M_av[ix+1,iy] = M_av_app[ix+1,iy]+av_mass/2
                        M_av[ix+1,iy+1] = M_av_app[ix+1,iy+1]+av_mass/4
                        M_av[ix,iy] = M_av_app[ix,iy]-av_mass
                elif j==ilim2:
                    if KH[ix,iy] > pmt:
                        av_mass = (M[ix,iy]-pmt)*ppe
                        M_av[ix+1,iy-1] = M_av_app[ix+1,iy-1]+av_mass
                        M_av[ix,iy] = M_av_app[ix,iy]-av_mass 
                M_av_app = M_av 
                reversal +=1
                #print(reversal)

return M_av

for i in range(n_iter):        
reversal=0
avalanche(M,KH,pmt)
reversalsize.append(reversal)
print(reversalsize)


x, y = np.histogram(reversalsize, 1000)
plt.figure(figsize=(10,7))
plt.clf()
plt.loglog(y[0:-1],x, 'r.')
plt.title("Avalanche Size Distribution", fontsize=14)
plt.xlabel(r"$\log$" + "(Avalanche Size)", fontsize=12)
plt.ylabel(r"$\log$" + "(Frequency)", fontsize=12)
plt.show()
reversion=0
反向大小=[]
def雪崩(M、KH、pmt):
p_比例系数=5
全球逆转
M_av=M.copy()
M_av_app=M.copy()
对于范围内的i(nx-1):
如果i 1-p_下降:
如果j==0:
如果KH[ix,iy]>pmt:
av_质量=(M[ix,iy]-pmt)*ppe
M_av[ix+1,iy]=M_av_app[ix+1,iy]+3*av_质量/4
M_av[ix+1,iy+1]=M_av_app[ix+1,iy+1]+av_质量/4
M_av[ix,iy]=M_av_应用程序[ix,iy]-av_质量
elif 0付款:
av_质量=(M[ix,iy]-pmt)*ppe
M_av[ix+1,iy]=M_av_app[ix+1,iy]+3*av_质量/4
M_av[ix+1,iy-1]=M_av_app[ix+1,iy-1]+av_质量/4
M_av[ix,iy]=M_av_应用程序[ix,iy]-av_质量
M_av_app=M_av
反转+=1
#打印(反转)
其他:
ilim1=i-nx/3
ilim2=nx-(i-nx/3)
对于范围内的j(ny-1):
ix=i+1
iy=j+1
p_下降=np.tanh((M[ix,iy]-pmt)/p_比例系数)
rand_drop=np.random.random()
如果随机下降>1-p下降:
如果j pmt:
av_质量=(M[ix,iy]-pmt)*ppe
M_av[ix+1,iy+1]=M_av_app[ix+1,iy+1]+av_质量
M_av[ix,iy]=M_av_应用程序[ix,iy]-av_质量
elif ilim1项目:
av_质量=(M[ix,iy]-pmt)*ppe
M_av[ix+1,iy-1]=M_av_app[ix+1,iy-1]+av_质量
M_av[ix,iy]=M_av_应用程序[ix,iy]-av_质量
M_av_app=M_av
反转+=1
#打印(反转)
返回M_av
对于范围内的i(n_iter):
反向=0
雪崩(M,KH,pmt)
reversalsize.append(反转)
打印(反向大小)
x、 y=np.直方图(反向大小,1000)
plt.图(figsize=(10,7))
plt.clf()
plt.loglog(y[0:-1],x,'r.)
plt.title(“雪崩尺寸分布”,fontsize=14)
plt.xlabel(r“$\log$”+“(雪崩大小)”,fontsize=12)
plt.ylabel(r“$\log$”+“(频率)”,fontsize=12)
plt.show()

每次迭代时,都将反转设置为0。这就是为什么它没有增加:

范围内i的
(n_iter):
反转=0#删除此行

您能检查一下缩进吗?此外,如果使用全局变量,则需要在函数内部和外部定义。最后,我想冒险在一个类中实现这段代码,使它更整洁。@JasonChia感谢您的回复。我可以通过邮件联系你吗?@JasonChia你能帮我吗?