簡體   English   中英

我如何在Matlab中求解耦合隨機微分方程

[英]How do i solve coupled stochastic differential equation in Matlab

我有單個Hindmarsh-Rose(HR)神經元模型,如下所示

x' = y - a*x^3 + b*x^2 -z + I0 + I1*cos*w*t + D*Zyi(t);

y' = c - d*x^2 -y;

z' = r[s(x - x0) - z ];

其中a,b,I1,I0,D,c,d,r,s,x0是參數。

我想改變“ w”(以I1 * cos w t的x'表示),並包括具有D強度的白高斯噪聲(Zyi(t)),並捕獲[20至60]范圍內的頻率靈敏度。 這是隨機共振的問題,其中系統取決於頻率,並且在特定頻率下存在可以通過SNR捕獲的相干性(在這種情況下為40)。

最初,當確定性(無噪聲項,即Zyi(t))時,我簡單地使用ODE45對該系統進行求解,並產生了正確的結果,但是當添加的高斯噪聲無法再現准確的結果時,即無法捕獲不同模擬下的頻率靈敏度。

然后,我用SDEToolbox在Matlab中解決了它。 我在工具箱中使用了Euler-Maruyama和Milstein內置算法,但沒有用。

function [] = sd1

a=1;
b=3;
c=1;
d=5;
s=4;
r=0.006;
x0=-1.6;
I1=0.2;
I0=1.31; %for I0=1.32 and no noise term all neurons fire.


T = 0:0.01:2000; 
xi = [0.1 0.01 0.1];  %initial conditions

zyi = 0.2 * randn; %Noise term with D=0.2

f = @(T,X)[X(2) - a*X(1)^3 + b * X(1)^2 - X(3) + I0 + (I1 * cos(40 * T)) + zyi;c - d*X(1)^2 - X(2) ; r*(s*(X(1) - x0) - X(3))]; 

y = sde_euler(f,g,T,xi); % Integrate
figure;
plot(T,y(:,1));
end

這確實會產生一些結果,但是對於“ w”的不同值,它不會產生確切的結果。 也就是說,如果“ w”小於(> 20和<40),則生成的尖峰數應小於,並且w在40和50(大約)之間。 的神經元尖峰應該最大,並且對於“ w”> 50和“ w” <60,神經元尖峰應該再次減少。有人可以告訴我如何捕獲它。

據我可以從https://github.com/horchler/SDETools/blob/master/SDETools/sde_euler.m得知,

函數f應該只描述SDE的確定性部分(用ODE解決),而函數g應該描述噪聲/擴散部分。 似乎您正在將噪聲(zyi)放入確定性f中,這自然會使所有事情搞砸了。

您在代碼中的哪里設置g? 應將其設置為g = 0.2,即g = D。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM