AnyLogic中的系统动力学 - Fibonacci序列

问题描述 投票:0回答:1

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

代替

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

我明白了

1, 2.137954153, 4.021788196, 7.471205823, 13.86070806...

我跟着these (spanish) instructions建立了我的简单模型。

我想这对所有软件都不常见,因为在VenSim中这个例子看起来效果很好......

有人可以向我解释为什么在我的AnyLogic程序中会发生这种情况吗?

system microsoft-dynamics fibonacci anylogic
1个回答
0
投票

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

你在vensim获得斐波纳契序列的原因是你在时间步骤1中使用欧拉方法(检入模型设置)

如果你在Vensim中将集成类型更改为RK45,或者如果使用euler的方法减少时间步长,那么你可能会获得与AnyLogic获得相同的结果... Runge-Kutta方法,即使它以固定步长1开始,它之后根据模型动态的要求更改时间步长。

现在,让我们明白在任何实际应用中使用时间步长为1都是荒谬的...但是,这就是为什么你在vensim中得到确切的值......因为那些确切的值对于模型真正是非常不准确的。我甚至会说你链接上的模型是一个糟糕的模型,不应该向公众展示。

幸运的是,AnyLogic不允许您这样做。您可以在模型属性中设置1的时间步长,但它会立即发现不准确性并将时间步长更改为更小的值(可能为0.01)...因为它只允许在混合方程中使用Euler + Newton选项,但不仅仅是欧拉。

© www.soinside.com 2019 - 2024. All rights reserved.