Итак, я пытаюсь построить решетку связанных карт на моем компьютере.
Решетка связанных карт (CML) задается следующим уравнением:
, где функция f (Xn) - логистика c карта:
со значением x от 0-1 и r = 4 для этого CML.
Примечание: 'n' можно рассматривать как время, а «я» - как пространство
Я потратил много времени на понимание итераций, и я придумал код, приведенный ниже, однако я не уверен, правильно ли это код для итерации этого уравнения.
Примечание: Я использовал массивы 2d numpy, где строки - это «n», а столбцы - «i», как видно из кода.
В общем, я хочу разработать код для имитации этого уравнения, и вот мой взгляд на это
Не переходите к коду напрямую вы не поймете, что происходит, не потрудившись сначала посмотреть на уравнения.
import numpy as np
import matplotlib.pyplot as plt
'''The 4 definitions created below are actually similar and only vary in their indexings. These 4
have been created only because of the if conditions I have put in the for loop '''
def logInit(r,x):
y[n,0]=r*x[n,0]*(1-x[n,0])
return y[n,0]
def logPresent(r,x):
y[n,i]=r*x[n,i]*(1-x[n,i])
return y[n,i]
def logLast(r,x):
y[n,L-1]=r*x[n,L-1]*(1-x[n,L-1])
return y[n,L-1]
def logNext(r,x):
y[n,i+1]=r*x[n,i+1]*(1-x[n,i+1])
return y[n,i+1]
def logPrev(r,x):
y[n,i-1]=r*x[n,i-1]*(1-x[n,i-1])
return y[n,i-1]
# 2d array with 4 row, 3 col. I created this because I want to store the evaluated values of log
function into this y[n,i] array
y=np.ones(12).reshape(4,3)
# creating an array of random numbers between 0-1 with 4 rows 3 columns
np.random.seed(0)
x=np.random.random((4,3))
L=3
r=4
eps=0.5
for n in range(3):
for i in range(L):
if i==0:
x[n+1,i]=(1-eps)*logPresent(r,x) + 0.5*eps*(logLast(r,x)+logNext(r,x))
elif i==L-1:
x[n+1,i]=(1-eps)*logPresent(r,x) + 0.5*eps*(logPrev(r,x) + logInit(r,x))
elif i > 0 and i < L - 1:
x[n+1,i]=(1-eps)*logPresent(r,x) + 0.5*eps*(logPrev(r,x) +logNext(r,x))
print(x)
Это действительно дает вывод. Вот оно:
[[0.5488135 0.71518937 0.60276338]
[0.94538775 0.82547604 0.64589411]
[0.43758721 0.891773 0.96366276]
[0.38344152 0.79172504 0.52889492]]
[[0.5488135 0.71518937 0.60276338]
[0.94538775 0.82547604 0.92306303]
[0.2449672 0.49731638 0.96366276]
[0.38344152 0.79172504 0.52889492]]
[[0.5488135 0.71518937 0.60276338]
[0.94538775 0.82547604 0.92306303]
[0.2449672 0.49731638 0.29789622]
[0.75613708 0.93368134 0.52889492]]
Но я уверен, что это не то, что я ищу.
Если вы можете найти правильный способ итерации и l oop уравнение CML с кодом? Предложите мне изменения, которые я должен сделать. Большое спасибо!!
Вам нужно будет подумать об итерациях и циклах, которые необходимо выполнить для моделирования этого уравнения. Это может быть утомительно, но только так вы можете предложить мне некоторые изменения в моем коде.