首页 > 解决方案 > 如何执行 if 语句一半的图表变为空白将其更改为返回数字,错误预期 2 得到 0

问题描述

我创建了针对两个参数 a 和 b 计算最大 Lyapunov 指数的代码。这个绘图没问题,但是由于我的 x 和 y 值等于 0,该图有一大块是白色的。因此,我需要将它们设置为等于 100 或类似的值,以防止这种情况发生并产生全彩色的网格图。

我已经尝试过 if 语句,但是当我将其中一个替换为 if 语句时,我得到一个语法错误或另一个错误 a.any() a.all() 它返回另一个错误

#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

    #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):
    return 2.

elif np.any(xnew>ee) and np.any(ynew<ee):
    return 5.

else:
    xold = xnew            
    yold = ynew

    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()

我期望一个完整的网格网格没有显示系统崩溃和运行时错误的白色。目前只有一半的地块是彩色的。错误返回“ValueError:没有足够的值来解包(预期 2,得到 0)”

标签: pythonmatplotlib

解决方案


推荐阅读