cgx11209 发表于 2008-10-1 10:49

相图错在哪儿

看看这个相图,应该是一条线的,画出来就成了2条

麻烦大家帮帮分析一下原因。是程序的那个地方出错了吗

ch_j1985 发表于 2008-10-1 14:05

回复 楼主 cgx11209 的帖子

背景知识是什么?
程序可否贴出来?

happyman 发表于 2008-10-1 14:17

应该是计算误差造成的,试着把计算的时间加长一些?

咕噜噜 发表于 2008-10-1 19:09

应该是瞬态造成的吧

cgx11209 发表于 2008-10-3 21:16

不好意思啊,这2日没能上网,前辈们在假日还如此勤学,值得我们学习!一起加油吧!!!
这是一个综合考虑齿侧间隙和时变啮合刚度的单级齿轮系统的动力学模型
程序如下:
2个M函数文件
function df=daba(t,x,flag,ks)
fx=fenduan(x,1);
df=;


function fx=fenduan(x,b)
if x(1)>b
    fx=x(1)-b;
elseif x(1)<-b
    fx=x(1)+b;
else fx=0;
end

主函数:
clear
ks=0.08;
options=odeset('RelTol',1e-8);%定义误差精度的,系统默认1e-3,如果改为1e-3,X将等于0
tt=2*pi; %定义步长的
=ode45(@daba,,,options,[],ks);
plot(x(7000:end,1),x(7000:end,2),'-');

ch_j1985 发表于 2008-10-3 21:27

回复 5楼 cgx11209 的帖子

请问LZ相图横坐标代表什么?
plot(t(7000:end),x(7000:end,1),'-');
plot(t(7000:end),x(7000:end,2),'-');

cgx11209 发表于 2008-10-3 22:03

是plot(x(7000:end,1),x(7000:end,2),'-');
不是plot(t(7000:end),x(7000:end,2),'-');
横坐标是位移,纵坐标是速度

cgx11209 发表于 2008-10-4 08:46

我把时间加长到80000个周期,算了8000,000个点,相图还是一样的
=ode45(@daba,,,options,[],ks);
plot(x(7999000:end,1),x(7999000:end,2),'-')

咕噜噜 发表于 2008-10-4 11:34

为什么一定要是一条线呢,我看了一下你的方程,里面出现了x(1)*cost,这是时变系统了

cgx11209 发表于 2008-10-4 19:09

回复 9楼 咕噜噜 的帖子

你的意思是可能就是2条线了
这是我看的别人的论文拿来验证,微分方程就是那样的,但是图画下跟人家的不一样,所以就来问问,要是2条线也对那么就不是程序的问题了。
谢谢你们!

liliangbiao 发表于 2008-10-5 08:18

你的b值在那里定义着呢??我怎么没有找到啊1!

octopussheng 发表于 2008-10-6 19:30

程序看起来是没有问题的,也有可能计算结果就是这样了!

cgx11209 发表于 2008-10-6 20:12

原帖由 liliangbiao 于 2008-10-5 08:18 发表 http://www.chinavib.com/forum/images/common/back.gif
你的b值在那里定义着呢??我怎么没有找到啊1!

在第一个M文件调用的时候就传递了b值,,为1
function df=daba(t,x,flag,ks)
fx=fenduan(x,1);
df=;

octopussheng 发表于 2008-10-6 21:03

另外,建议最好用一个函数来建立你的微分方程,不要一个调用另外一个,效率可能会降低!

cgx11209 发表于 2008-10-7 21:44

非常感谢!
页: [1] 2
查看完整版本: 相图错在哪儿