首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连续求解微分方程

连续求解微分方程
EN

Stack Overflow用户
提问于 2012-11-11 00:35:33
回答 1查看 761关注 0票数 0

在本文中,我尝试在Matlab中对时空神经网络进行建模和模拟。我已经确定了一个微分方程,它将代表我的神经元的动力学。

现在,我想要“连续”地求解这个微分方程,这意味着我的模拟应该运行,做一些事情,同时我的神经元应该根据微分方程进行更新。

目前,我有两种方法:

首先,我可以这样做:

代码语言:javascript
复制
ode45(@diffEquation, [0, inf], nn.U); % where nn.U is the initial (usually randomized) neuron state

function dUdt = diffEquation(t,U)
   nn.U = U;
   dUdt = % the equation
end

所以我们的想法是在后台启动一个并行任务,无限地运行ode45,并直接更新我的神经元状态nn.U。然而,据我所知,ode45通常存储每个t的值的“历史”,并在计算完成时返回这些值(例如tTFINAL)。我对这些值不感兴趣,我希望以这种方式运行ode45,很快就会耗尽内存。

另一个想法是一遍又一遍地无限调用ode45 (也是在异步后台任务中):

代码语言:javascript
复制
while 1 % i.e. simulation not over yet
    [~,y] = ode45(@diffEquation, [0, 0.001], nn.U);
    nn.U = y(end,:); 
end

这和第一种方法一样,对我来说似乎非常笨拙和笨拙。我有一种感觉,我的问题一定有更好的解决方案。

也许ode45在这里不是正确的选择?

编辑:只是为了澄清一下,差异。方程是一个随时间变化的普通方程,没有什么奇特的东西可以用ode45 (即dUdt = -U + some-stuff * networkoutput)求解

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-12 07:33:56

如果你的颂歌足够简单。您可以提供分析解决方案并省去odesolve。无论如何。你想运行一个模拟,在虚拟时间内求解常微分方程。对于这一点,Simulink可能是更好的选择。

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

https://stackoverflow.com/questions/13323830

复制
相关文章

相似问题

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