All pastes #170368 Raw Edit

Unnamed

public text v1 · immutable
·published 2006-09-14 15:36 UTC
rendered paste body
import Numeric as num
import math, random
from scipy import gplt

A = num.array([[0.5,0.0],[0.,0.5]])
omega = num.array([0.05, 0.01]) 
c = num.array([0.5, 0.5])   # num.matrixmultiply(A,num.array([1,1]))
w = num.array([1., 0.0])
r = num.array([0.0, 0.0])
S_in = num.array([0.0, 0.0])
S_out = 1.
v = 0.
tau = 350.
eta = 0.01
mu = 0.2

p = num.array([0.0, 0.0])
d = 0.

a_p = 0.0001
a_d = 0.0001
tau_p = 250.
tau_d = 250.

dp = num.array([0.0, 0.0])
dw = num.array([0.0, 0.0])

its = 150000

data = range(its)

for t in range(its):
   r = num.matrixmultiply(A,[math.sin(omega[0]*t),math.sin(omega[1]*t)])+c
   r = r.astype('f')
   for i in range(2):
      S_in[i] = float(random.random() <= (1 - math.exp(-r[i])))
   dv = eta*num.matrixmultiply(w,num.transpose(S_in)) - (v/tau)
   v += dv
   
   S_out =  float(random.random() <= (1 - math.exp(-v-2)))
   
   dd = S_out - d/tau_d
   for i in range(2):
      dp[i] = S_in[i] - p[i]/tau_p

   d += dd
   p += dp

   
   for i in range(2):
      dw[i] = (a_p*S_out*p[i] - a_d*S_in[i]*d)

   w += dw
   w = w * (1/math.sqrt(w[0]**2+w[1]**2))
   data[t] = [w[0],w[1],v+2]   

print w, math.sqrt(w[0]**2+w[1]**2)

gplt.plot(range(100000,its), data[100000:])