Я создал код, который вычисляет максимальные показатели Ляпунова по двум параметрам a и b.Это хорошо, но есть часть графика белого цвета, где график разрушается из-за того, что мои значения x и y равны нулю.Поэтому мне нужно установить их равными, скажем, 100 или аналогичным, чтобы не допустить этого и создать полностью окрашенную сетку.
Я уже пробовал операторы if, но я либо получаю синтаксическую ошибку, либо другую ошибку a.any () a.all (), когда я подставляю один из них в оператор if, он возвращает еще одну ошибку.Я попытался, если elif и другие заявления и возвращающие значения.В них содержатся ошибки, возвращающие
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)