zp2000 发表于 2008-10-24 10:20:58

关于代数环的问题

本帖最后由 ljelly 于 2009-12-18 11:42 编辑

关于代数环我在网上查到了一些说法,其大概的说明是:“当方程两边出现同一个变量时,则出现代数环”,或者另一种说法是:“现在时刻的输出是依赖现在时刻的输入值来计算”,这些东西的说明我都不是很明白啊?现时刻的输出依赖于现时刻的输入这不是很正常的吗?我的模型出现了代数环问题后就出不了结果,关于代数环的概念我还是把握不住,请大家帮忙解释下,谢谢,新手提问,刚用simulink没多久

问题已经搞清楚了,代数的产生主要是在没有微分和积分的情况下,直接的代数运算,如果存在反馈环节,就出现了f(y)=y的这种方程,在simulink里面,对于代数的运算是不存在迭代的,因此产生代数环会导致无法进行运算,因为在时间步长的计算中,simulink无法更新模块的值,这也就是“现在时刻的输出是依赖现在时刻的输入值来计算”的含义

解决方法:通过添加memory模块可以解决代数环的问题,在memory中,提供了一个初值,这样就避免了更新过程中的问题

[ 本帖最后由 zp2000 于 2008-10-25 12:24 编辑 ]

ljelly 发表于 2008-10-24 11:57:20

回复 1# zp2000 的帖子

在simulink中,直接馈通定义为系统的输出直接依赖输入,也就是说,模块的输出方程中包含输入
则此模块具备直接馈通特性
将带有直接馈通特性的各模块串成一个回路会导致一个代数环。
在一个代数环中,由于模块之间是相互依赖的,所有的模块都要求在同一个时刻计算输出,这与
通常的仿真顺序概念相抵触。
具有代数环的模型,仿真得到的结果可能不正确。
所以在搭建系统模型之前,应尽量通过手工方法对方程求解,以去掉代数环。
simulink使用Newton法求解代数环,尽管这种方法很有效,但是对有些代数环来说,这个方法
可能不收敛,所以尽量不要在模型中包含代数环,以免仿真结果不正确

zp2000 发表于 2008-10-24 12:07:05

楼上的兄弟们真是热心人啊,等了这么一大早上终于你能够回个贴了,我想问一问,在一个有反馈回路中,如果有一个模块出现了“输出直接依赖输入”,那么是否就意味着整个回路是一个代数环呢?
另:我本来进行了一个闭环仿真,里面用到了模糊控制的fuzzy logic control这个模块,这两天一直都没怎么调通,总是有错误,小弟以前没什么使用simulink的基础,就是现在看了点FUZZY这个工具箱,所以都不知道如何来排除错误,不知道楼上的兄弟你是否有时间,能够和我一起讨论下这个方面的知识

[ 本帖最后由 zp2000 于 2008-10-24 12:12 编辑 ]

zp2000 发表于 2008-10-25 12:25:01

答案已经问清楚了,呵呵,感谢2楼的兄弟这么热心

逆水行舟 发表于 2008-12-1 19:04:56

zp2000你好

我给你发了短消息,你看了吗

zp2000 发表于 2008-12-3 18:09:36

楼上的兄弟,我看到了你的短消息,而且已经回复你了,不知道你收到了没有,我也是个新手

changliqiangt 发表于 2009-12-18 11:19:01

请问memory的初值应该如何设置呢?谢谢

oyanglove5212 发表于 2009-12-18 14:17:18

谢谢斑竹的答案,我也新手,学习下

nostalgica 发表于 2009-12-28 09:40:38

memory就是延时一个最小步长,初值可设为0

blueblueboy 发表于 2010-11-11 23:29:47

这个问题 很愁人 楼主的方法还是比较好用的
页: [1]
查看完整版本: 关于代数环的问题