双摆杆是混沌理论的典型运动模型之一。涉及重力加速度、摆杆长度和质量。

1.双摆杆的摆角分析

input:

% 已知物理参数
L1 = 5;L2 = 3; %两摆杆长度和质量
m1 = 3;m2 = 5;
g = 9.80665; % 物理重力加速度m/s^2 % 定义初始参数
% y0的第1参数,即摆1的初始角度;第2,即摆2的初始角度
% 第3,摆1的初始角速度;第4,摆2的初始角速度
theta1_0 = pi/2;
theta2_0 = pi/2;
%警告: 在 t=2.623401e+00 处失败。在时间 t 处,步长必须降至所允许的最小值(7.105427e-15)以下,才能达到积分容差要求。
tspan = [0,0.01,2];
doublePendulum(tspan,theta1_0,theta2_0,L1,L2,m1,m2,g); function [T, Theta1, Theta2] = doublePendulum(tspan,theta1_0,theta2_0,L1,L2,m1,m2,g)
% 定义求解常微分方程所需的函数
function dydt = doubleP(t,y)
% 定义双摆模型方程
d1 = m1+m2*L1^2/L2^2;
d2 = m2*L1*L2*cos(y(1)-y(2))/L2^2;
d3 = m2*L1*L2*sin(y(1)-y(2))*y(4)^2/L2;
d4 = g/L2*sin(y(2)) + cos(y(1)-y(2))*y(3)^2/L2;
dydt = [y(3); y(4); (m2*d4*d2-d3*m2*cos(y(1)-y(2)))/(d1-m2*d2*d2); (d1*d4-m2*d3*cos(y(1)-y(2)))/(L2*(d1-m2*d2*d2))];
end
% 定义初值和时间步长
y0 = [theta1_0, theta2_0, 0, 0];
options = odeset('RelTol',1e-10,'AbsTol',1e-10); % 调用ode45求解微分方程组
[T,Y] = ode45(@doubleP,tspan,y0,options); % 计算摆的位置
Theta1 = L1*sin(Y(:,1));
Theta2 = L2*sin(Y(:,2))+Theta1;
Theta1 = -L1*cos(Y(:,1));
Theta2 = -L2*cos(Y(:,2))+Theta2; % 绘制双摆摆角随时间变化的图像
plot(T,Y(:,1:2))
legend('\theta_1','\theta_2')
xlabel('时间 t')
ylabel('摆角 \theta')
title('双摆摆角随时间变化的图像')
end

output:

2.双摆杆基本运动模型

input:

% 运用双摆模型动画
% 初始角度
theta1 = pi/3;
theta2 = -pi/4; % 初始速度
w1 = 0;
w2 = 0; % 物理参数
g = 9.8; % 重力加速度
l1 = 3; % 第一根杆长度
l2 = 2; % 第二根杆长度
m1 = 2; % 第一个质点质量
m2 = 1; % 第二个质点质量 % 仿真时间
tmax = 10;
dt = 0.01;
tspan = 0:dt:tmax; % 初始状态
init = [theta1 w1 theta2 w2]; % 调用ode45求解微分方程
[t,y] = ode45(@(t,y)double_pend(t, y, m1, m2, l1, l2, g), tspan, init); % 动画绘制
figure('Name', '双摆动画');
for i = 1:length(t)
x1 = l1*sin(y(i, 1));
y1 = -l1*cos(y(i, 1));
x2 = x1+l2*sin(y(i, 3));
y2 = y1-l2*cos(y(i, 3));
plot([0;x1;x2], [0;y1;y2], '-o', 'LineWidth', 2);
axis([-3 3 -3 1]);
title(sprintf('双摆动画, t = %.2f', t(i)));
grid on;
drawnow;
end % 使用 animatedline 函数来动态绘制出双摆的运动轨迹
% 要调用这个double_pend函数,需要传入若干个参数(见上),包括时间 T,摆的位置 Theta1 与 Theta2,摆杆长度 L1 和 L2,以及每个时间步长的间隔时间 interval
function dydt = double_pend(t, y, m1, m2, l1, l2, g)
theta1 = y(1);
w1 = y(2);
theta2 = y(3);
w2 = y(4); dtheta1dt = w1;
dw1dt = (m2*g*sin(theta2)*cos(theta1-theta2)-m2*l1*w1^2*sin(theta1-theta2)-...
m2*l2*w2^2*sin(theta1-theta2)-(m1+m2)*g*sin(theta1))/((m1+m2)*l1-m2*l1*cos(theta1-theta2).^2);
dtheta2dt = w2;
dw2dt = ((m1+m2)*(g*sin(theta1)*cos(theta1-theta2)-l1*w1^2*sin(theta1-theta2)...
-g*sin(theta2))-m2*l2*w2^2*sin(theta1-theta2)*cos(theta1-theta2))/((m1+m2)*l2-m2*l2*cos(theta1-theta2).^2); dydt = [dtheta1dt; dw1dt; dtheta2dt; dw2dt];
end

output:

【matlab混沌理论】1.3.双摆杆基本模型的更多相关文章

  1. 混沌理论(Chaos theory)和非线性系统

    混沌理论(Chaos theory)是关于非线性系统在一定参数条件下展现分岔(bifurcation).周期运动与非周期运动相互纠缠,以至于通向某种非周期有序运动的理论.在耗散系统和保守系统中,混沌运 ...

  2. Java 理论与实践: 修复 Java 内存模型,第 2 部分(转载)

    在 JSR 133 中 JMM 会有什么改变? 活跃了将近三年的 JSR 133,近期发布了关于如何修复 Java 内存模型(Java Memory Model, JMM)的公开建议.在本系列文章的 ...

  3. 进程池与线程池基本使用、协程理论与实操、IO模型、前端、BS架构、HTTP协议与HTML前戏

    昨日内容回顾 GIL全局解释器锁 1.在python解释器中 才有GIL的存在(只与解释器有关) 2.GIL本质上其实也是一把互斥锁(并发变串行 牺牲效率保证安全) 3.GIL的存在 是由于Cpyth ...

  4. MATLAB 机器人学工具箱(Robotics Toolbox )sl_drivepoint 模型 consecutive zero crossings 问题

    操作环境 工具箱:Robotics Toolbox for MATLAB 版本 10.2.1 作者 Peter Corke MATLAB版本:R2018a 操作系统:win10 问题 sl_drive ...

  5. [ActionScript 3.0] AS3 双A字模型

    package { import caurina.transitions.Tweener; import flash.display.Sprite; import flash.events.Mouse ...

  6. 《量化投资:以MATLAB为工具》连载(2)基础篇-N分钟学会MATLAB(中)

    http://www.matlabsky.com/thread-43937-1-1.html   <量化投资:以MATLAB为工具>连载(3)基础篇-N分钟学会MATLAB(下)     ...

  7. 如何实现Linux+Windows双系统启动

    设置你的计算机根据需要启动 Windows 10 或 Ubuntu 18.04. 尽管 Linux 是一个有着广泛的硬件和软件支持的操作系统,但事实上有时你仍需要使用 Windows,也许是因为有些不 ...

  8. 混沌数学之Chua's circuit(蔡氏电路)

    蔡氏电路(英语:Chua's circuit),一种简单的非线性电子电路设计,它可以表现出标准的混沌理论行为.在1983年,由蔡少棠教授发表,当时他正在日本早稻田大学担任访问学者[1].这个电路的制作 ...

  9. 【转载】matlab常用函数

    第一篇:Matlab软件函数 一.软件操作函数 1)命令窗口函数: clc:清空命令窗口,使用向上箭头翻看命令. open:打开文件,文本文件(*.doc),可执行文件(*.exe),图形文件(*.f ...

  10. MatLab 组件大全

    MATLAB                                                                    矩阵实验室 7.0.1 Simulink       ...

随机推荐

  1. Linux-源码安装软件

    一.源码安装步骤 源码的安装一般由3个步骤组成:配置(configure).编译(make).安装(make install). 1.配置(configure) Configure是一个可执行脚本,它 ...

  2. doris单机安装部署

    原文出处 doris单机安装部署 下载Doris 环境要求 Linux系统:Centos7.x或Ubantu16.04及以上版本 Java运行环境: JDK8 java -version 在windo ...

  3. 初识Redis与桌面客户端

    Redis介绍 什么是Redis Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库. Redi ...

  4. QA|selenium打开浏览器后没有执行后面的代码(get请求)|UI自动化测试

    Q:selenium打开浏览器后没有执行后面的代码(get请求) 代码如图: 原因:webdriver_path应该给的是chromedriver.exe的路径,而不是chrome.exe的路径,写错 ...

  5. 利用接口测试框架实现web状态的监控

    之前,我们已经说明了如何实现一个我们的接口测试框架RATF,当然这个框架不止可以用于管理我们的接口测试代码,我们还可以用他来对我们的web进行简单粗暴的监控. 原理: 1. 通过使用配置文件,对要监控 ...

  6. 电气工程师必学------CODESYS v3.5 入门学习笔记(一)

    一.新建工程 打开软件新建工程,如图 此教程只是入门练习,所以这里一般情况下都是创建的Standard project,也就是标准工程.窗口下方可以设置工程名称与存放位置. 紧接着是选择设备与编译语言 ...

  7. 关于oop的一点回忆

    昨天在一个程序员行业群里看到别人发了一条消息, 大意是:要做好封装啦,不要随便用public啦,不要随便改别人代码啦. 说的好像就是我,因为,我这辈子最后悔的一件事情之一就是手贱改动别人代码. 那大概 ...

  8. Solution -「九省联考 2018」劈配

    Description Link. 一年一度的综艺节目<中国新代码>又开始了.Zayid 从小就梦想成为一名程序员,他觉得这是一个展示自己的舞台,于是他毫不犹豫地报名了. 轻车熟路的 Za ...

  9. 云图说|初识API中心APIHub

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:API中心是为AP ...

  10. 如何使用DALL-E 3

    如何使用 DALL-E 3:OpenAI 图像生成指南 DALL-E 3 是 OpenAI 图像生成器的高级版本,它可以理解自然语言提示来创建详细图像. 它克服了以前版本的方形图像限制,现在支持各种宽 ...