bella_jing 发表于 2008-10-18 14:11

油膜力编程问题,请大家多多指教啊~~!!

在研究中,我看到油膜力表示方法主要有两种,一种是有很多参数组成,即C1,C2,C3等,代表有《带有两端支座松动故障的转子系统的振动分析》里用到的油膜力表示,
还有一种是用G,V,S,等表示的,例如《具有裂纹-碰摩耦合故障转子-轴承系统的动力学研究》。
在编程中使用,GVS方法编程,不知道为什么,油膜力总是为虚数(有实部哈~),调小步长不管用,验证程序其他地方都是对的,就是油膜力这里的问题。实在不知道为什么出错。请大牛们指教一二。

谢谢啊~~~!!!
我编的关于求油膜力的程序。
arfa=atan((x(11)+2*x(10))/(x(9)-2*x(12)))-pi/2*sign((x(11)+2*x(10))/(x(9)-2*x(12)))-pi/2*sign(x(11)+2*x(10));
G0=2/sqrt(1-(x(9).^2)-(x(11).^2))*(pi/2+atan((x(11)*cos(arfa)-x(9)*sin(arfa))/sqrt(1-(x(9).^2)-(x(11).^2))));
S0=(x(9)*cos(arfa)+x(11)*sin(arfa))/(1-(x(9)*cos(arfa)+x(11)*sin(arfa)).^2);
V0=(2+(x(11)*cos(arfa)-x(9)*sin(arfa))*G0)/(1-(x(9).^2)-(x(11).^2));

Fx=-sqrt((x(9)-2*x(12)).^2+(x(11)+2*x(10).^2))/(1-x(9).^2-x(11).^2)*(3*x(9)*V0-sin(arfa)*G0-2*cos(arfa)*S0);
Fy=-sqrt((x(9)-2*x(12)).^2+(x(11)+2*x(10).^2))/(1-x(9).^2-x(11).^2)*(3*x(11)*V0+cos(arfa)*G0-2*sin(arfa)*S0);

ch_j1985 发表于 2008-10-18 14:25

sqrt(A)
如果A是负数,会出现虚数吧

sigma665 发表于 2008-10-19 09:30

回复 楼主 bella_jing 的帖子

你要看看从哪一步开始出现虚数

bella_jing 发表于 2008-10-20 20:48

谢谢各位~我找到原因了^_^

如题。谢谢大家~!!

ch_j1985 发表于 2008-10-20 21:31

回复 地板 bella_jing 的帖子

LZ能否把原因告知大家?

happy 发表于 2008-10-21 06:53

呵呵,这个模型我见过,正如二楼说的,很容易导致sqrt中出现负数而出错

bella_jing 发表于 2008-10-21 12:47

原因是我的公式有个括号放错位置了……

如题。唉,本来不想说的。这么低级的错误……:@L

bella_jing 发表于 2008-10-21 12:48

回复 6楼 happy 的帖子

那你是怎么解决的呢?
我很想知道的是,你的初始参数是怎么设置的。可否告知?

happy 发表于 2008-10-21 16:07

原帖由 bella_jing 于 2008-10-21 12:48 发表 http://www.chinavib.com/forum/images/common/back.gif
那你是怎么解决的呢?
我很想知道的是,你的初始参数是怎么设置的。可否告知?

这个基本上还没看到谁有特别好的办法,一般都是调小步长,还有一种办法就是当sqrt中的值小于0时,强制令其大于0,不过这种办法似乎效果有限,还是经常会出现你说的问题

laolang8311 发表于 2009-5-13 16:00

原来是这样
页: [1]
查看完整版本: 油膜力编程问题,请大家多多指教啊~~!!