声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3444|回复: 12

[共享资源] 感谢+分享:四自由度微分方程组matlab求解

[复制链接]
发表于 2008-4-25 15:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
首先要感谢论坛里各位帮助过我的高手们,特别是siyanger关于非线性微分方程的求解的帖子, ch_j1985 在我最绝望的时候给与的帮助,以及版主eight一直以来的的严厉要求下,终于自己完成了,我的关于一个四自由度非线性方程组的求解,感谢所有帮助过我的,给我回复的所有人。现把程序贴出来,给以后需要的朋友借以参考,程序还有很多的不足之处,希望高手们继续给我提出修改的意见和建议。
不多说了,来点儿实际的!
  1. function f=vdp_eq(t,y,flag,m1,m2,l,c1,c2,c3,k1,k2,k3,e1,e2,e3,e4,e11,e12,e21,e22,w,j1,j2,F0)
  2. %y(1),y(3),y(5),y(7)为位移,y(2),y(4),y(6),y(8)为速度
  3. f=[y(2);
  4. (-c1*(y(2)-y(6))*(j1+e11^2*m1)-c2*(y(4)-y(8))*(j1-e11*e12*m1)-k1*(y(1)-y(5))*(j1+e11^2*m1)-k2*(y(3)-y(7))*(j1-e11*e12*m1))*2*l/((e11+e12)*m1*j1);
  5. y(4);
  6. (-c1*(y(2)-y(6))*(j1-e11*e12*m1)-c2*(y(4)-y(8))*(j1+e12^2*m1)-k1*(y(1)-y(5))*(j1-e11*e12*m1)-k2*(y(3)-y(7))*(j1+e12^2*m1))*2*l/((e11+e12)*m1*j1);
  7. y(6);
  8. (-(c1*(y(6)-y(2))+c3*y(6))*(j2+e21^2*m2)-(c2*(y(8)-y(4))+c3*y(8))*(j2-e21*e22*m2)-(k1*(y(5)-y(1))+k3*y(5))*(j2+e21^2*m2)-(k2*(y(7)-y(3))+k3*y(7))*(j2-e21*e22*m2)+(2*j2+e21*m2*(e4-e3))*F0*sin(w*t))*2*l/((e21+e22)*m2*j2);
  9. y(8);
  10. (-(c1*(y(6)-y(2))+c3*y(6))*(j2-e21*e22*m2)-(c2*(y(8)-y(4))+c3*y(8))*(j2+e22^2*m2)-(k1*(y(5)-y(1))+k3*y(5))*(j2-e21*e22*m2)-(k2*(y(7)-y(3))+k3*y(7))*(j2+e22^2*m2)+(2*j2+e22*m2*(e4-e3))*F0*sin(w*t))*2*l/((e21+e22)*m2*j2)];
  11. end
复制代码
以上存为M文件

在matlab内运行
  1. options=odeset('RelTol',1e-6,'AbsTol',[1e-6]);

  2. %%%%Parameter make
  3. t_end=2000; m1=3000; m2=2065; l=660; c1=5; k1=260; c2=5; k2=260; c3=30;  k3=150;
  4. e1=0; e2=0; e3=189+e2; e4=189-e2; e11=l+e1; e12=l-e1; e21=l+e2; e22=l-e2;
  5. w=0.143; j1=5.194e+6; j2=8.477e+6; F0=37.5;
  6. %%%%%%%%%%%%%

  7. [t,y]=ode45('vdp_eq',[0 t_end],[0 0 0 0 0 0 0 0],options,m1,m2,l,c1,c2,c3,k1,k2,k3,e1,e2,e3,e4,e11,e12,e21,e22,w,j1,j2,F0);
  8. u1=y(:,1); u2=y(:,2); u3=y(:,3); u4=y(:,4); u5=y(:,5); u6=y(:,6); u7=y(:,7); u8=y(:,8);
  9. figure('unit','normalized','color',[1,1,1]);
  10. h=get(gcf); set(gcf,'Name','1','numbertitle','off');
  11. plot(t,u1); title('位移'); xlabel('时间t');ylabel('位移x'); grid on
  12. figure('unit','normalized','color',[1,1,1]);
  13. h=get(gcf); set(gcf,'Name','2','numbertitle','off');
  14. plot(u1,u2); title('图2'); xlabel('位移x');ylabel('速度dx'); grid on
  15. figure('unit','normalized','color',[1,1,1]);
  16. h=get(gcf); set(gcf,'Name','3','numbertitle','off');
  17. plot(t,u3); title('位移'); xlabel('时间t');ylabel('位移x'); grid on
  18. figure('unit','normalized','color',[1,1,1]);
  19. h=get(gcf); set(gcf,'Name','4','numbertitle','off');
  20. plot(u3,u4); title('图4'); xlabel('位移x');ylabel('速度dx'); grid on
  21. figure('unit','normalized','color',[1,1,1]);
  22. h=get(gcf); set(gcf,'Name','5','numbertitle','off');
  23. plot(t,u5); title('位移'); xlabel('时间t');ylabel('位移x'); grid on
  24. figure('unit','normalized','color',[1,1,1]);
  25. h=get(gcf); set(gcf,'Name','6','numbertitle','off');
  26. plot(u5,u6); title('图6'); xlabel('位移x');ylabel('速度dx'); grid on
  27. figure('unit','normalized','color',[1,1,1]);
  28. h=get(gcf); set(gcf,'Name','7','numbertitle','off');
  29. plot(t,u7); title('位移'); xlabel('时间t');ylabel('位移x'); grid on
  30. figure('unit','normalized','color',[1,1,1]);
  31. h=get(gcf); set(gcf,'Name','8','numbertitle','off');
  32. plot(u7,u8); title('图8'); xlabel('位移x');ylabel('速度dx');
  33. grid on
复制代码
这个输出结果是我需要用的,时间设定的比较长,会运行比较长的时间。

[ 本帖最后由 ChaChing 于 2009-3-8 12:00 编辑 ]
未命名.JPG

评分

2

查看全部评分

回复
分享到:

使用道具 举报

发表于 2008-5-21 09:40 | 显示全部楼层
我想问下,你的那些初值的数值都是怎么取的?如:
m1=3000; m2=2065; l=660; c1=5; k1=260;
c2=5; k2=260; c3=30;  k3=150;
e1=0; e2=0; e3=189+e2; e4=189-e2;
e11=l+e1; e12=l-e1; e21=l+e2; e22=l-e2;
w=0.143; j1=5.194e+6; j2=8.477e+6; F0=37.5;

[ 本帖最后由 ChaChing 于 2009-3-8 11:52 编辑 ]
 楼主| 发表于 2008-6-13 16:08 | 显示全部楼层

关于参数地选择

因为这是一个实体模型的方程组,所以所有参数地选择是按照工程实际的参数来定的,就是说,实体模型里是多少,数学模型里同样也选用多少
发表于 2009-2-14 21:58 | 显示全部楼层
怎么得到下面的式子?
(-c1*(y(2)-y(6))*(j1+e11^2*m1)-c2*(y(4)-y(8))*(j1-e11*e12*m1)-k1*(y(1)-y(5))*(j1+e11^2*m1)-k2*(y(3)-y(7))*(j1-e11*e12*m1))*2*l/((e11+e12)*m1*j1);
y(4);
发表于 2009-3-8 07:21 | 显示全部楼层
受益匪浅,非常谢谢论坛里的高手!想问问版主或者其他大侠,这个四自由度非线性方程组中的非线性指的是方程右边的正弦函数吗?非线性体现在哪里呢?

[ 本帖最后由 beehappy 于 2009-3-8 07:40 编辑 ]

评分

1

查看全部评分

发表于 2009-3-8 09:46 | 显示全部楼层

回复 5楼 beehappy 的帖子

呃。。。好像确实没有非线性项。
发表于 2011-8-27 15:49 | 显示全部楼层
确实是一个很好的资源。非线性越来越热点了
真心收藏!谢谢!!
发表于 2011-11-14 01:47 | 显示全部楼层
多谢楼主分享
发表于 2012-3-1 22:53 | 显示全部楼层
请问如果要加入白噪声的路面激励该怎么办呢?
发表于 2012-3-5 09:29 | 显示全部楼层
同上,求白噪声路面激励函数.....

可以这样定义吗?
fun1是路面激励函数,编程函数
将F0在计算程序里赋值为F0=fun1,可以这样吗?

我也没发现非线性项.....小弟初来乍到,求指教,诸位大侠见笑了
发表于 2012-3-6 21:45 | 显示全部楼层
感谢   学习下  
发表于 2012-3-6 21:56 | 显示全部楼层
vdp_eq  中的方程组时怎么化出来的啊  
发表于 2012-4-1 17:58 | 显示全部楼层
每天来这里的目的就是为了学习,期待着有一天也能为这个论坛做一点贡献。

点评

一起期待, 但儘量不要为体能而灌水!? 签到&红包可以更多  发表于 2012-4-1 23:15
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-18 00:18 , Processed in 0.064231 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表