物理学数学中,在动力系统领域双摆是一个摆锤,另一个摆锤连接在其末端,是一个简单的物理系统,具有丰富的动态特性对初始条件具有很强的敏感性双摆的运动由一组耦合的常微分方程控制并且是混沌的

由于双摆运动涉及到二阶微分方程组,在matlab中对双摆的仿真需要用到ode45求其数值解。

(代码来自 https://wenku.baidu.com/view/f78cec060912a21615792925.html

  1. clear all;
  2. %控制r1 r2两个角位移 就可改变双摆初状态
  3. r1=0.8;
  4. r2=0.8;
  5. m1=1;
  6. m2=1;
  7. L1=1;
  8. L2=1;
  9. g=9.8;
  10. Da=inline(['[x(3);x(4);',...
  11. 'inv([(m1+m2)*L1,m2*L2*cos(x(1)-x(2));',...
  12. 'm1*L1*cos(x(1)-x(2)),m1*L2])*'...
  13. '[m2*L2*x(4)^2*sin(x(2)-x(1))-(m1+m2)*g*sin(x(1));',...
  14. 'm2*L1*x(3)^2*sin(x(1)-x(2))-m2*g*sin(x(2))]]'],'t','x',...
  15. 'flag','m1','m2','L1','L2','g');
  16. set(gcf,'DoubleBuffer','on');
  17. [t,x]=ode45(Da,[0,20],[r1,r2,0,0],[],m1,m2,L1,L2,g);
  18. axis([-(L1+L2),(L1+L2),-(L1+L2)*1.8,1]);
  19. axis square;hold on;
  20. gh1=plot([0,L1*exp(i*(x(1)-pi/2))],'r-');
  21. set(gh1,'linewidth',2,'markersize',6,'marker','o');
  22. gh2=plot([L1*exp(i*(x(1)-pi/2)),L1*exp(i*(x(1)-pi/2))+L2*exp(i*(x(2)-pi/2))],'b-');
  23. set(gh2,'linewidth',2,'markersize',6,'marker','o');
  24. for k=2:size(x,1);
  25. C1=[0,L1*exp(i*(x(k,1)-pi/2))];
  26. C2=[L1*exp(i*(x(k,1)-pi/2)),L1*exp(i*(x(k,1)-pi/2))+L2*exp(i*(x(k,2)-pi/2))];
  27. set(gh1,'xdata',real(C1),'ydata',imag(C1));
  28. set(gh2,'xdata',real(C2),'ydata',imag(C2));
  29. title(['t=',num2str(t(k))],'fontsize',12);
  30. pause(0.1);
  31. end
  32. % figure;
  33. % subplot(2 ,3 ,1);plot(t,x(:,1));title('t-\theta_1');
  34. % xlabel('t');ylabel('\theta_1');
  35. % subplot(2 ,3 ,2);plot(t,x(:,2));title('t-\theta_2');
  36. % xlabel('t');ylabel('\theta_2');
  37. % subplot(2 ,3 ,3);plot(t,x(:,3));title('t-\omega_1');
  38. % xlabel('t');ylabel('\omega_1');
  39. % subplot(2,3,4);plot(t,x(:,4));title('t-\omega_2');
  40. % xlabel('t');ylabel('\omega_2');
  41. % subplot(2,3,5);plot(x(:,1),x(:,3));title('\theta_1-\omega_1');
  42. % xlabel('\theta_1');ylabel('\omega_1');
  43. % subplot(2,3,6);plot(x(:,2),x(:,4));title('\theta_2-\omega_2');

  效果图和上图差不多,放一张截图

另外,科学网上也有对双摆的模拟程序

http://blog.sciencenet.cn/blog-292361-1038664.html

matlab-双摆仿真的更多相关文章

  1. matlab数据流仿真和时间流仿真

    simulink 使用的动态系统仿真,仿真需要求状态方程和输出方程,关键是求状态方程,而状态方程的求解有多种算法,可变步长和定步长,所以仿真时对求解器的选择和步长的设置就比较重要. 所谓基於数据流的仿 ...

  2. 声反馈抑制使用matlab/simulink仿真

    第一份工作时做啸叫抑制的仿真,调大0.3可以有大的啸叫产生,下图的SIMULINK仿真模型 实现移相有多种方法: 1.iir实现 2.FFT实现 3.使用FIR实现 所有信号均可以由正弦信号叠加而成.

  3. Matlab/Simulink仿真中如何将Scope转化为Figure?

    1.只需要在运行仿真后,在命令窗口内输入: ,'ShowHiddenHandle','on'); set(gcf,'menubar','figure'); scope最上方会出现一个菜单栏,选择Too ...

  4. Matlab 仿真实现TI Instaspin 的Foc 逆Clarke变换和SVPWM

    一直没搞明白TI 的Instaspin的SVPWM实现原理,最后只能在Matlab里仿真看看输出波形是不是和普通的SVPWM实现输出的波形一样,用M文件实现,下面是代码: clear all; the ...

  5. matlab仿真随机数的产生

    概率论和数理统计实验(matlab中实现) 一.伯努利分布 R=binornd(N,P); //N,P为二次分布的俩个参数,返回服从参数为N,P的二项分布的随机数,且N,P,R的形式相同. R=bin ...

  6. MATLAB与Carsim联合仿真时提示matlab not found的解决方法(CarSim在联合仿真时提示找不到MATLAB的解决方法)

    CarSim8.02并没有提供选择联合仿真的MATLAB/Simulink的版本的功能,CarSim总是与最后安装的MATLAB/Simulink进行联合仿真,如果安装有多个matlab版本则只打开最 ...

  7. SimMechanics/Second Generation倒立摆模型建立及初步仿真学习

    笔者最近捣鼓Simulink,发现MATLAB的仿真模块真的十分强大,以前只是在命令窗口敲点代码,直到不小心敲入simulink,就一发不可收拾.话说simulink的模块化建模确实方便,只要拖拽框框 ...

  8. Simulink仿真入门到精通(七) Simulink的回调函数

    7.1 什么是回调函数 Callback functions(回调函数)是因某种操作而除法对其调用的函数,如按下按钮或双击操作等. 常用的Simulink回调函数可应用在以下场合: 打开Simulin ...

  9. 图像处理算法的仿真平台之VGA时序

    一  概述 图像处理算法一般是用matla或OpenCV实现的,若是用FPGA实现,设计思路差别极大.matlab和opencv的优势:这些工具的优势在于可以方便地载入图像文件,或输出数据到图像文件, ...

  10. JNI学习总结

    JNI学习总结 标签(空格分隔): java JNI:Java Native Interface,是一种通过java调用本地方法的技术(当然也可以反过来),随着JDK版本的提升,JNI的效率也一直在提 ...

随机推荐

  1. 复习下CSS-零碎要点

    一,CSS选择器 1.  h1 > strong {color:red;}表示的是只有h1下子元素才是红色,“孙子”就不行. 2.  h1 + p {margin-top:50px;}   选择 ...

  2. c——闰年

    PTA #include<stdio.h> int main() { int year,month,day,cnt,flag; flag = ; scanf("%4d/%2d/% ...

  3. Python爬取今日头条段子

    刚入门Python爬虫,试了下爬取今日头条官网中的段子,网址为https://www.toutiao.com/ch/essay_joke/源码比较简陋,如下: import requests impo ...

  4. Java_01初识

    1.配置环境变量 设置JAVA_HOME:新建系统变量,变量名为JAVA_HOME,变量值设置为java jdk所在的目录 设置path: 在所有数据的最前方添加%JAVA_HOME%\bin; 2. ...

  5. js/php判断移动端还是PC端

    if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobi ...

  6. lay-verify 无效

    lay-verify 无效 使用lay-verify有两个需要注意的地方: form标签需要添加 class="layui-form" 提交按钮需要添加 lay-submit=&q ...

  7. PCIE读书笔记

    PCIE读书笔记 什么是TLP:

  8. 无法生成core dump文件的几个原因

    1. 进程无写权限(如目录不可写.存在同名的非regular文件(目录或符号链接)等) 2. 存在同名文件且有多个hard link 3. 文件系统空间不足 4. 指定目录不存在 5. 进程的RLIM ...

  9. WinHTTrack Website Copier使用说明

    WinHTTrack Website Copier使用说明 WinHTTrack Website Copier可以抓取整个网站或者某个网页.某个论坛帖子.以抓取论坛某个主题帖子为例: 1.打开WinH ...

  10. Opencv + opencv_contrib + Tesseract 之Qt开发环境搭建

    1.软件包准备 opencv源码包地址:                官网  github opencv_contrib源码包地址:   github Tesseract源码包地址:        ...