首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Matlab中求解耦合随机微分方程

如何在Matlab中求解耦合随机微分方程
EN

Stack Overflow用户
提问于 2015-05-27 06:14:13
回答 1查看 826关注 0票数 1

我有一个单一的印地语玫瑰(HR)神经元模型如下

代码语言:javascript
复制
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”(在x‘的I1*cos_w_t)和包括白高斯噪声(Zyi(T))的D强度和捕获频率灵敏度范围20至60。这是一个随机共振问题,其中系统依赖于频率,在特定的频率下,有相干性(在这种情况下是40),可以通过信噪比捕获。

最初,我只是在系统确定性(无噪声项,即Zyi(t))并且得到正确的结果时,使用ODE45来求解,但当加高斯噪声时,不能再现精确的结果,即不能在不同的模拟中捕获频率灵敏度。

然后在Matlab中使用SDEToolbox进行求解。我在工具箱中使用了Euler和Milstein的构建算法,但是没有用。

代码语言:javascript
复制
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之间(约)为no。神经元尖峰应该是最大的,对于"w“>50和"w”< 60,神经元尖峰应该是较少的again.Can,有人告诉我如何捕捉这个。

EN

回答 1

Stack Overflow用户

发布于 2015-05-27 12:41:12

据我从euler.m所知,

函数f应该只描述SDE的确定性部分(您用ODE解决的部分),而g应该描述噪声/扩散部分。似乎你在把噪音(zyi)放进确定性的f中,这自然地把一切都搞砸了。

代码中的g是在哪里设置的?它应该设置为g=0.2,即g=D。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30474476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档