一連の遅延微分方程式を解く必要があり、これらの方程式でピンク ノイズを使用したいと考えています。
Python用のPydelayパッケージでやってみましたが、問題は、ノイズを生成してからシミュレーションに渡すか、シミュレーション中にノイズを生成する必要があることです。最初のオプションは機能しません。このソルバーで指定されたパラメーターは一定である必要があり、ノイズは時間とともに変化するためです。Pydelay はすべてのサンプルが他のサンプルから独立しているノイズの生成のみをサポートしているため、2 番目のオプションは機能しません。これはピンク ノイズには当てはまりません。
誰もそれを行う方法を知っていますか?
これが私のコードです(私のコードのように一定ではなく、I1とI2をピンクノイズにする必要があります):
# -*- coding: utf-8 -*-
"""
Created on Tue Aug 2 15:35:15 2016
@author: kasienka
"""
#!python
import pydelay
from time import time
import math
import numpy as np
from numpy import fft
from scipy import integrate
import matplotlib as mpl
mpl.use('Agg')
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from scipy.interpolate import griddata
import sys
import pylab as pl
from pydelay import dde23
# define the equations
eqns = {
'y1' : 'I1 - y1(t-tau) + epsilon * pow(y2(t-tau), 1.1)',
'y2' : 'I2 - y2(t-tau) + epsilon * pow(y1(t-tau), 1.1)'
}
#define the parameters
params = {
'I2' : 0.2,
'I1' : 0.4,
'tau': 1.31,
'epsilon': 0.2
}
# Initialise the solver
dde = dde23(eqns=eqns, params=params)
# set the simulation parameters
dde.set_sim_params(tfinal=50, dtmax=0.0001)
histdic = {
'y1': lambda t: 0.2,
'y2': lambda t: 0.4
}
dde.hist_from_funcs(histdic, 1000)
# run the simulator
dde.run()
p1 = []
p2 = []
x1 = []
x2 = []
czasy = np.linspace(0, 50, 10000)
for el in times:
x10 = dde.sol_spl(el)['y1']
x20 = dde.sol_spl(el)['y2']
prob1 = 1.0 / (1 + 3.14**(-(x10 - x20)) )
prob2 = 1.0 / (1 + 3.14**(-(x20 - x10)) )
p1.append(prob1)
p2.append(prob2)
x1.append(x10)
x2.append(x20)
fig = pl.figure()
pl.plot(times, p1, label = '$p_1$')
pl.plot(times, p2, label = '$p_2$')
pl.xlabel('$time$')
pl.ylabel('$probabilities$')
pl.legend()
pl.savefig(sys.argv[1])