声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2578|回复: 8

[编程技巧] 二阶微分方程组求解

[复制链接]
发表于 2012-3-9 17:33 | 显示全部楼层 |阅读模式

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

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

x
求解此方程组。本人解出来的全是直线,望各位高手帮助!
回复
分享到:

使用道具 举报

发表于 2012-3-9 19:55 | 显示全部楼层
程序写错了? 如果短可以贴出来
 楼主| 发表于 2012-3-11 19:26 | 显示全部楼层
本帖最后由 牛小贱 于 2014-3-12 13:02 编辑

回复 2 # VibrationMaster 的帖子

M文件函数:
  1. function dydt=fun3(t,y)
  2. q1=0.032;
  3. q2=0.032;
  4. q3=0.048;
  5. q4=2.353*10^-3;
  6. q5=2.174*10^-3;
  7. q6=5.262*10^-3;
  8. q7=0.0029;
  9. q8=0.0019;
  10. q9=0.0088;
  11. l=0.178;
  12. v1=7000;
  13. v2=6500;
  14. v3=7000;
  15. v4=7500;
  16. u1=2.842*10^-5*(v1^2+v2^2+v3^2+v4^2);
  17. u2=2.842*10^-5*(v4^2-v2^2)*l;
  18. u3=2.842*10^-5*(v3^2-v1^2)*l;
  19. u4=3.232*10^-7*(-v1^2+v2^2-v3^2+v4^2);
  20. m=0.3;
  21. g=9.81;
  22. dydt=zeros(12,1);
  23. dydt(1)=y(2);
  24. dydt(3)=y(4);
  25. dydt(5)=y(6);
  26. dydt(7)=y(8);
  27. dydt(9)=y(10);
  28. dydt(11)=y(12);
  29. dydt(2)=((sin(y(9))*cos(y(11))*cos(y(7))+sin(y(11))*sin(y(7)))*u1-q1*y(2))/m;
  30. dydt(4)=((sin(y(9))*sin(y(11))*cos(y(7))-cos(y(11))*sin(y(7)))*u1-q2*y(4))/m;
  31. dydt(6)=(cos(y(9))*cos(y(7))*u1-q3*y(6)-m*g)/m;
  32. dydt(8)=(u2+(q5-q6)*y(10)*y(12)-q7*y(8))/q4;
  33. dydt(10)=(u3+(q4-q6)*y(8)*y(12)-q8*y(10))/q5;
  34. dydt(12)=(u4+(q4-q5)*y(8)*y(10)-q9*y(12))/q6;
  35. end
复制代码
调用m文件函数:
  1. [t,y]=ode45('fun4',[0:0.01:5],[0 0 0 0 0 0 0 0 0 0 0 0]);
  2. plot(t,y(5,1),'.k',t,y(6,1),'.r',t,y(7,1),':c',t,y(8,1),':b')
  3. title('不需要标题吧 ');
  4. xlabel('t');
  5. ylabel('y');
复制代码


发表于 2012-3-12 08:56 | 显示全部楼层
本帖最后由 牛小贱 于 2014-3-12 13:00 编辑
  1. function s
  2. [t,y]=ode45(@fun,[0:0.01:5],[0 0 0 0 0 0 0 0 0 0 0 0]);
  3. size(t),size(y)
  4. plot(t,y(:,5),'.k',t,y(:,6),'.r',t,y(:,7),':c',t,y(:,8),':b')
  5. title('不需要标题吧');
  6. xlabel('t');
  7. ylabel('y');
  8. function dydt=fun(t,y)
  9. q1=0.032;
  10. q2=0.032;
  11. q3=0.048;
  12. q4=2.353*10^-3;
  13. q5=2.174*10^-3;
  14. q6=5.262*10^-3;
  15. q7=0.0029;
  16. q8=0.0019;
  17. q9=0.0088;
  18. l=0.178;
  19. v1=7000;
  20. v2=6500;
  21. v3=7000;
  22. v4=7500;
  23. u1=2.842*10^-5*(v1^2+v2^2+v3^2+v4^2);
  24. u2=2.842*10^-5*(v4^2-v2^2)*l;
  25. u3=2.842*10^-5*(v3^2-v1^2)*l;
  26. u4=3.232*10^-7*(-v1^2+v2^2-v3^2+v4^2);
  27. m=0.3;
  28. g=9.81;
  29. dydt=zeros(12,1);
  30. dydt(1)=y(2);
  31. dydt(3)=y(4);
  32. dydt(5)=y(6);
  33. dydt(7)=y(8);
  34. dydt(9)=y(10);
  35. dydt(11)=y(12);
  36. dydt(2)=((sin(y(9))*cos(y(11))*cos(y(7))+sin(y(11))*sin(y(7)))*u1-q1*y(2))/m;
  37. dydt(4)=((sin(y(9))*sin(y(11))*cos(y(7))-cos(y(11))*sin(y(7)))*u1-q2*y(4))/m;
  38. dydt(6)=(cos(y(9))*cos(y(7))*u1-q3*y(6)-m*g)/m;
  39. dydt(8)=(u2+(q5-q6)*y(10)*y(12)-q7*y(8))/q4;
  40. dydt(10)=(u3+(q4-q6)*y(8)*y(12)-q8*y(10))/q5;
  41. dydt(12)=(u4+(q4-q5)*y(8)*y(10)-q9*y(12))/q6;
复制代码


untitled.jpg

评分

1

查看全部评分

 楼主| 发表于 2012-3-12 11:26 | 显示全部楼层
回复 4 # shengshengchina 的帖子

运行结果还是不太理想啊,当改变参数V1,V2,V3,V4(可变量).使其v1+v3=v2+v4,则输出的Z(y(3))就会上下波动,应该是一直增大或者保持水平,除非当小于某个值时才会减小。还有我看我们的主函数不一样,而你写的主函数上的 size(t),size(y),这句什么意思、什么作用啊,还是不明白。望给与解答,谢谢你前面的帮助啊!






发表于 2012-3-24 16:12 | 显示全部楼层
本帖最后由 shengshengchina 于 2012-3-24 16:13 编辑

我的size(t),size(y),没什么用,刚开始我是想检查你的数据来着,后来发现没什么问题,但是忘了删去这语句。你说的z变量,我都不知道在哪,我也不知道你说的Z(y(3))数据是指哪个数据,另外你说的它为什么要一直增大或者保持水平,我就更不知道为什么了。
发表于 2014-3-12 12:02 | 显示全部楼层
aaaaaaaaaaaaaa
回复 支持 0 反对 1

使用道具 举报

发表于 2014-11-5 15:57 | 显示全部楼层
{:{13}:}
发表于 2014-12-1 10:50 | 显示全部楼层
数值解,初值很主要!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-3 05:41 , Processed in 0.086827 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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