ValueError:没有足够的值来解压(预期2,得到0)python,如果是matplotlib的elif else语句

时间:2019-04-10 12:56:52

标签: python if-statement matplotlib

我创建了代码,针对两个参数a和b计算最大Lyapunov指数。这样就可以了,但是由于我的x和y值等于零,因此该图有一部分在白色中塌陷。因此,我需要将其设置为等于或等于100,以防止发生这种情况并生成全彩色的网格网格图。

我已经尝试过if语句,但是当我将其中之一替换为我的if语句时,我得到了语法错误或另一个错误a.any()a.all(),它返回了另一个错误。我已经尝试过ifif和else语句并返回值。他们的语句返回错误

ValueError:没有足够的值可解包(预期2,得到0)

d= 0.1
eps = 0.000001
#xnew equation
def f(a,b,xold,yold):
    m= a*xold*(1-b*yold)*(1-xold*(1-b*yold))
    if np.any(m>eps):
        return m
    else:
        return 50

#ynew equation
def g(b,d,xold,yold):
    n= (1-d)*yold*(1+b*xold)
    if np.any(n>eps):
        return n
    else:
        return 100
#Jacobian matrix equations. A,B,C,D    
def A(a,b,xold,yold):
    return a*(1-2*xold- b*yold+ 4*b*xold*yold- 2*(b**2)*xold*(yold**2))

def B(b,a,xold,yold):
    return a*b*xold*(2*xold- 1- 2*b*xold*yold)

def C(b,d,yold):
    return (1-d)*b*yold

def D(b,d,xold):
    return (1-d)*(1+b*xold)

#ml equation using ABCD     
def e(a,b,xold,yold,ydash):
    return (((A(a,b,xold,yold)+(B(b,a,xold,yold)*ydash))**2 +(C(a,b,yold)+(D(b,d,xold)*ydash))**2) / (1 + ydash**2))


#ydash equation using ABCD
def yz(a,b,xold,yold,ydash):
    return (C(b,d,yold)+(D(b,d,xold)*ydash))/(A(a,b,xold,yold)+(B(b,a,xold,yold)*ydash)) 

方程式在另一个定义为函数的单元格中。

#diff values of a and b looping 
a=np.linspace(0,6,80)
b=np.linspace(0,5,80)

def lyapunov(a,b):
    #initial conditions
    a,b = np.meshgrid(a,b)
    d = 0.1
    xold = 0.5
    yold = 0.01
    ee = 0.000001
   #xnew and ynew values
   for k in range(1000):
       xnew=f(a,b,xold,yold)
       ynew=g(b,d,xold,yold)
       xold = xnew
       yold = ynew

    if np.any(xnew<ee) and np.any(ynew<ee):
        ml = 100
        return ml

    elif np.any(xnew>ee) and np.any(ynew<ee):
        ml = 50
        return ml

    else:
        ml=0   
        for l in range(100):
            ydash=1
            ml = ml + np.log(abs(e(a,b,xold,yold,ydash)))

            ydash = yz(a,b,xold,yold,ydash) 
            xold=f(a,b,xold,yold)
            yold=g(b,d,xold,yold)

        ml = (ml/(2*100))
        return  ml

z = lyapunov(a,b)
ax.set_title('Lyapunov Exponent')
c = ax.pcolormesh(z)
fig.colorbar(c)
plt.show()

我希望没有白色的完整网格网格显示系统崩溃,因此非常小的0,因此将运行时间减半。目前,只有一半的地块是彩色的。 ERROR返回“ ValueError:没有足够的值要解压(预期2,得到0)

0 个答案:

没有答案