我正在尝试使用 Yampa 进行一些基本的系统仿真,就像我在 Simulink 中所做的那样。在这种情况下,我想模拟这个 simulink 教程介绍的弹簧和阻尼器系统。我编写了以下信号函数来表示系统:
system = time >>> force >>> displacement
force = constant (m * g)
displacement = feedback (-) (velocity >>> integral) (gain $ k / m) 0
velocity = feedback (-) integral (gain $ c / m) 0
该feedback
函数创建一个基本的反馈循环并实现如下:
feedback op a b b0 = loopPre b0 inner
where inner = arr (uncurry op) >>> a >>> (identity &&& b)
哦,还有:
gain x = arr (*x)
有了合理的正常数,我得到了一个非常不稳定的系统:
我构建反馈循环或应用集成的方式是否存在明显错误?