matlab-双摆仿真
在物理学和数学中,在动力系统领域,双摆是一个摆锤,另一个摆锤连接在其末端,是一个简单的物理系统,具有丰富的动态特性,对初始条件具有很强的敏感性。双摆的运动由一组耦合的常微分方程控制并且是混沌的。
由于双摆运动涉及到二阶微分方程组,在matlab中对双摆的仿真需要用到ode45求其数值解。
(代码来自 https://wenku.baidu.com/view/f78cec060912a21615792925.html)
clear all;
%控制r1 r2两个角位移 就可改变双摆初状态
r1=0.8;
r2=0.8;
m1=1;
m2=1;
L1=1;
L2=1;
g=9.8;
Da=inline(['[x(3);x(4);',...
'inv([(m1+m2)*L1,m2*L2*cos(x(1)-x(2));',...
'm1*L1*cos(x(1)-x(2)),m1*L2])*'...
'[m2*L2*x(4)^2*sin(x(2)-x(1))-(m1+m2)*g*sin(x(1));',...
'm2*L1*x(3)^2*sin(x(1)-x(2))-m2*g*sin(x(2))]]'],'t','x',...
'flag','m1','m2','L1','L2','g');
set(gcf,'DoubleBuffer','on');
[t,x]=ode45(Da,[0,20],[r1,r2,0,0],[],m1,m2,L1,L2,g);
axis([-(L1+L2),(L1+L2),-(L1+L2)*1.8,1]);
axis square;hold on;
gh1=plot([0,L1*exp(i*(x(1)-pi/2))],'r-');
set(gh1,'linewidth',2,'markersize',6,'marker','o');
gh2=plot([L1*exp(i*(x(1)-pi/2)),L1*exp(i*(x(1)-pi/2))+L2*exp(i*(x(2)-pi/2))],'b-');
set(gh2,'linewidth',2,'markersize',6,'marker','o');
for k=2:size(x,1);
C1=[0,L1*exp(i*(x(k,1)-pi/2))];
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))];
set(gh1,'xdata',real(C1),'ydata',imag(C1));
set(gh2,'xdata',real(C2),'ydata',imag(C2));
title(['t=',num2str(t(k))],'fontsize',12);
pause(0.1);
end
% figure;
% subplot(2 ,3 ,1);plot(t,x(:,1));title('t-\theta_1');
% xlabel('t');ylabel('\theta_1');
% subplot(2 ,3 ,2);plot(t,x(:,2));title('t-\theta_2');
% xlabel('t');ylabel('\theta_2');
% subplot(2 ,3 ,3);plot(t,x(:,3));title('t-\omega_1');
% xlabel('t');ylabel('\omega_1');
% subplot(2,3,4);plot(t,x(:,4));title('t-\omega_2');
% xlabel('t');ylabel('\omega_2');
% subplot(2,3,5);plot(x(:,1),x(:,3));title('\theta_1-\omega_1');
% xlabel('\theta_1');ylabel('\omega_1');
% subplot(2,3,6);plot(x(:,2),x(:,4));title('\theta_2-\omega_2');
效果图和上图差不多,放一张截图
另外,科学网上也有对双摆的模拟程序
http://blog.sciencenet.cn/blog-292361-1038664.html
matlab-双摆仿真的更多相关文章
- matlab数据流仿真和时间流仿真
simulink 使用的动态系统仿真,仿真需要求状态方程和输出方程,关键是求状态方程,而状态方程的求解有多种算法,可变步长和定步长,所以仿真时对求解器的选择和步长的设置就比较重要. 所谓基於数据流的仿 ...
- 声反馈抑制使用matlab/simulink仿真
第一份工作时做啸叫抑制的仿真,调大0.3可以有大的啸叫产生,下图的SIMULINK仿真模型 实现移相有多种方法: 1.iir实现 2.FFT实现 3.使用FIR实现 所有信号均可以由正弦信号叠加而成.
- Matlab/Simulink仿真中如何将Scope转化为Figure?
1.只需要在运行仿真后,在命令窗口内输入: ,'ShowHiddenHandle','on'); set(gcf,'menubar','figure'); scope最上方会出现一个菜单栏,选择Too ...
- Matlab 仿真实现TI Instaspin 的Foc 逆Clarke变换和SVPWM
一直没搞明白TI 的Instaspin的SVPWM实现原理,最后只能在Matlab里仿真看看输出波形是不是和普通的SVPWM实现输出的波形一样,用M文件实现,下面是代码: clear all; the ...
- matlab仿真随机数的产生
概率论和数理统计实验(matlab中实现) 一.伯努利分布 R=binornd(N,P); //N,P为二次分布的俩个参数,返回服从参数为N,P的二项分布的随机数,且N,P,R的形式相同. R=bin ...
- MATLAB与Carsim联合仿真时提示matlab not found的解决方法(CarSim在联合仿真时提示找不到MATLAB的解决方法)
CarSim8.02并没有提供选择联合仿真的MATLAB/Simulink的版本的功能,CarSim总是与最后安装的MATLAB/Simulink进行联合仿真,如果安装有多个matlab版本则只打开最 ...
- SimMechanics/Second Generation倒立摆模型建立及初步仿真学习
笔者最近捣鼓Simulink,发现MATLAB的仿真模块真的十分强大,以前只是在命令窗口敲点代码,直到不小心敲入simulink,就一发不可收拾.话说simulink的模块化建模确实方便,只要拖拽框框 ...
- Simulink仿真入门到精通(七) Simulink的回调函数
7.1 什么是回调函数 Callback functions(回调函数)是因某种操作而除法对其调用的函数,如按下按钮或双击操作等. 常用的Simulink回调函数可应用在以下场合: 打开Simulin ...
- 图像处理算法的仿真平台之VGA时序
一 概述 图像处理算法一般是用matla或OpenCV实现的,若是用FPGA实现,设计思路差别极大.matlab和opencv的优势:这些工具的优势在于可以方便地载入图像文件,或输出数据到图像文件, ...
- JNI学习总结
JNI学习总结 标签(空格分隔): java JNI:Java Native Interface,是一种通过java调用本地方法的技术(当然也可以反过来),随着JDK版本的提升,JNI的效率也一直在提 ...
随机推荐
- 【OO学习】OO第二单元作业总结
OO第二单元作业总结 在第二单元作业中,我们通过多线程的手段实现了电梯调度,前两次作业是单电梯调度,第三次作业是多电梯调度.这个单元中的性能分要求是完成所有请求的时间最短,因此在简单实现电梯调度的基础 ...
- 【开发】iOS入门 - Touch事件处理学习笔记
网上介绍iOS事件机制的文章,有不少都讲得很好,搬运一次意义不大,这里我就列一些要点吧. 跟Android一样,iOS的Touch事件也是从外到内传递,然后从内到外响应,可以看成一个U型结构.然而,个 ...
- 学习笔记DL004:标量、向量、矩阵、张量,矩阵、向量相乘,单位矩阵、逆矩阵
线性代数,面向连续数学,非离散数学.<The Matrix Cookbook>,Petersen and Pedersen,2006.Shilov(1977). 标量.向量.矩阵.张量. ...
- BootStrap的table技术小结:数据填充、分页、列宽可拖动
本文结构:先说明,后代码.拷贝可直接运行. 一.demo结构: 二.文件引入 这些里面除了下面2个比较难找,其他的都很好找 bootstrap-table-resizable.js colResiza ...
- 微信小程序wx.navigateTo页面不跳转
排查后发现: 若是在全局app.json中配置了tabBar,引用的链接与wx.navigateTo页面跳转url地址相同就无法实现跳转.
- 引擎设计跟踪(九.14.2 final) Inverse Kinematics: CCD 在Blade中的实现
因为工作忙, 好久没有记笔记了, 但是有时候发现还得翻以前的笔记去看, 所以还是尽量记下来备忘. 关于IK, 读了一些paper, 觉得之前翻译的那篇, welman的paper (http://gr ...
- c++ 调用 wmi 获取数据
#define _WIN32_DCOM #include <iostream> using namespace std; #include <comdef.h> #includ ...
- 《Attention Augmented Convolutional Networks》注意力的神经网络
paper: <Attention Augmented Convolutional Networks> https://arxiv.org/pdf/1904.09925.pdf 这篇文章是 ...
- Beginning Math and Physics For Game Programmers (Wendy Stahler 著)
Chapter 1. Points and Lines (已看) Chapter 2. Geometry Snippets (已看) Chapter 3. Trigonometry Snippets ...
- go 的数据类型
bool string int int8 int16 int32(rune) int64 uint uint8(byte) uint16 uint32 uint64 uintptr:无符号整型,用于存 ...