AnyLogic 中的系统动力学 - 斐波那契数列

Posted

技术标签:

【中文标题】AnyLogic 中的系统动力学 - 斐波那契数列【英文标题】:Systems Dynamics in AnyLogic - Fibonacci sequence [closed] 【发布时间】:2018-08-12 09:23:19 【问题描述】:

我在 AnyLogic 中有一个系统动力学模型,我正在尝试对斐波那契数列进行建模。然而,由于某种原因,我的结果与预期的不同:

而不是

1,1,2,3,5,8,13...

我明白了

1、2.137954153、4.021788196、7.471205823、13.86070806...

我跟随these (spanish) instructions 构建了我的简单模型。

我想这并不是所有软件都通用的,因为在 VenSim 中这个例子似乎运行良好......

谁能向我解释一下为什么我的 AnyLogic 程序会发生这种情况?

【问题讨论】:

"有人能解释一下为什么我的 AnyLogic 程序会发生这种情况吗?"也许吧,但你的程序吗?您的问题中没有代码... 【参考方案1】:

发生这种情况的原因是每个软件中处理微分方程的方式。

您在 vensim 中获得斐波那契数列的原因是因为您使用的是欧拉法和时间步长 1(检查模型设置)

如果您在 Vensim 中将积分类型更改为 RK45,或者如果您使用欧拉方法减少时间步长,您可能会得到与 AnyLogic 得到的结果相同的结果... Runge-Kutta 方法,即使它以固定步长开始1,它稍后会根据模型动力学的要求改变时间步长。

现在,让我们了解在系统动力学模型中使用 1 的时间步长,该模型以较低的时间步长为您提供错误的结果,这意味着您的模型不是很健壮...但这就是您获得准确值的原因在 vensim 中......因为这些确切的值对于模型的真实情况非常不准确。我什至会说您链接上的模型是一个坏模型,不应该向公众展示。

幸运(或不幸),AnyLogic 不允许您这样做。你可以在模型属性中设置时间步长为1,但是anylogic会在不通知的情况下将时间步长改成别的(除非你在虚拟模式下运行,并且满足其他条件)... AnyLogic只允许使用Euler+混合方程选项中的牛顿,但不仅仅是欧拉。

我认为这是 AnyLogic 中存在多年的错误,我已将其告知他们,我认为他们永远不会解决它,如果我们幸运的话,可能会在 AnyLogic 9 之前解决。

【讨论】:

感谢您的回答。现在我明白了:)

以上是关于AnyLogic 中的系统动力学 - 斐波那契数列的主要内容,如果未能解决你的问题,请参考以下文章

什么是斐波那契数列?在日常生活中有什么实例?

斐波那契数列在生活中都有哪些典型的应用

斐波那契数列

请问斐波那契数列的前n项和公式是啥?

,c语言:利用数组求斐波那契数列的前20项

裴波那契数列是怎样的数列?有啥特别的地方