变维三重for循环中最小参数的求法

2024-10-03 19:28:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我是个编程新手,所以即使是简单的事情,我也有困难; 我试图从下面的三重循环中得到3个向量,我有一个Xvec,其中有120个数据,我想要的是每个x in Xvec尝试90个A值,每个A都会有Zs到a(Zs首先是浮动的,然后通过比较ceil和floor,我会取给我最小值的那一个),然后这些值找到了最佳的AZs耦合,使函数gibbs最小化120 Xvec值。 经过几天的试验,我可以写下面的代码,但是代码运行得太慢了,我认为应该有直接的方法来找到这些AZs参数,实际上我甚至不确定用这个代码我是否得到了我需要的结果。任何建议都将不胜感激

    for x in Xvec:          
        for A in range(1,91):  
            for Zs in (np.arange(1, A+1 , 0.1 , dtype=float)):

                g = gibbs(x,A,Zs)
                g1 = np.append(g1,g)

            min_pos, minofg = g1.argmin() , g1.min()

            Zpos = 1+(0.1)*min_pos
            Zceil = np.ceil(Zpos)     
            Zfloor = np.floor(Zpos)   

            gc = gibbs(x,A,Zceil)        
            gf = gibbs(x,A,Zfloor)        

            k = min(gc,gf)
            if k == gc:   Z = Zceil
            else:   Z = Zfloor
            z1 = np.append(z1,Z)
            x1 = np.append(x1,x)
            a1 = np.append(a1,A)                                    

    for N in range(0,10711,90):
        a = min(g1[N:N+90])     
        g1vec = np.append(g1vec,a)
        b = g1[N:N+90].argmin()
        a1vec = np.append(a1vec,a1[N+b])
        z1vec = np.append(z1vec,z1[N+b])

最后我需要有3个向量,一个是每x有一个函数gibbs的最小可能值,另外2个是给出函数最小值的AZs值。 在我找不到任何其他方法之后,我计算了所有的可能性,然后尝试在另一个for循环中分离它们,但这需要永远,我有很多怀疑它是否真的有效。你知道吗


Tags: 函数infornpmingcgibbsappend