双摆杆运动模型。初始条件的微小差异,会导致千差万别的运动现象,这是混沌理论重要体现。主要考虑初始条件有两摆杆长度、质量、初始摆杆角度、重力加速度。

input:

% 参数定义
L1 = 1; % 第一根摆长
L2 = 0.5; % 第二根摆长
m1 = 1; % 第一根摆质量
m2 = 0.5; % 第二根摆质量
g = 9.81; % 重力加速度 % 初始状态定义
theta1 = pi/6; % 第一根摆角度
theta2 = 0; % 第二根摆角度
dtheta1 = 0; % 第一根摆角速度
dtheta2 = 0; % 第二根摆角速度 % 动画绘制
tspan = [0 30]; % 时间跨度
y0 = [theta1 dtheta1 theta2 dtheta2]; % 初始状态向量
[t, y] = ode45(@(t,y) pendulum2(t, y, L1, L2, m1, m2, g), tspan, y0); % 解微分方程 x1 = L1*sin(y(:,1)); % 第一根摆x坐标
y1 = -L1*cos(y(:,1)); % 第一根摆y坐标
x2 = L1*sin(y(:,1)) + L2*sin(y(:,3)); % 第二根摆x坐标
y2 = -L1*cos(y(:,1)) - L2*cos(y(:,3)); % 第二根摆y坐标 set(gcf, 'renderer', 'painters');
axis equal; % x、y轴比例相等
axis([-1.5*(L1+L2) 1.5*(L1+L2) -1.5*(L1+L2) 1.5]); % 设置坐标轴范围
hold on; x1_trace = zeros(length(t), 1); % 第一个摆的摆顶端x坐标
y1_trace = zeros(length(t), 1); % 第一个摆的摆顶端y坐标
x2_trace = zeros(length(t), 1); % 第二个摆的摆顶端x坐标
y2_trace = zeros(length(t), 1); % 第二个摆的摆顶端y坐标 % 绘制双摆动画,同时画出摆顶端轨迹连线
for k = 1:length(t)-1
plot([0 x1(k) x2(k)], [0 y1(k) y2(k)], 'linewidth', 0.5); % 绘制双摆图形
plot(x2(1:k), y2(1:k), '.', 'color', [0.8 0.05 0.1], 'markersize', 10); % 绘制尾迹
x1_trace(k+1) = L1*sin(y(k+1,1));
y1_trace(k+1) = -L1*cos(y(k+1,1));
x2_trace(k+1) = x1_trace(k+1) + L2*sin(y(k+1,3));
y2_trace(k+1) = y1_trace(k+1) - L2*cos(y(k+1,3));
plot([x1_trace(k) x1_trace(k+1)], [y1_trace(k) y1_trace(k+1)], 'linewidth', 1, 'color', 'blue'); % 第一个摆的轨迹线
plot([x2_trace(k) x2_trace(k+1)], [y2_trace(k) y2_trace(k+1)], 'linewidth', 1, 'color', 'green'); % 第二个摆的轨迹线
drawnow; % 实时显示
end % 微分方程定义
function dydt = pendulum2(t, y, L1, L2, m1, m2, g)
dydt = zeros(4,1); % 向量拆分为各个分量
theta1 = y(1);
dtheta1 = y(2);
theta2 = y(3);
dtheta2 = y(4); % 运动方程
% 第一个摆的力
F1 = -m1*L1*dtheta1^2*sin(theta1) - m1*g*cos(theta1)*sin(theta1);
% 第二个摆的力
F2 = -m2*(L1*dtheta1^2*sin(theta1) + L2*dtheta2^2*sin(theta2)) - m2*g*cos(theta2)*sin(theta2);
% 坐标加速度
d2theta1 = (F1 + m1*g*sin(theta1)*cos(theta1) + F2*cos(theta1-theta2))/(m1*L1^2 + m2*L1^2 - m2*L1*L2*cos(theta1-theta2));
d2theta2 = (F2*cos(theta1-theta2) + (m1+m2)*g*sin(theta1) + L1*dtheta1^2*sin(theta1)*cos(theta1-theta2) - (m1+m2)*L2*dtheta2^2*sin(theta1-theta2))/(L2^2*m2 + (m1+m2)*L1^2 - 2*L1*L2*m2*cos(theta1-theta2)); dydt(1) = dtheta1; % 第一个摆角速度
dydt(2) = d2theta1; % 第一个摆角加速度
dydt(3) = dtheta2; % 第二个摆角速度
dydt(4) = d2theta2; % 第二个摆角加速度
end

output:

初始条件:L1 = 1;L2 = 0.5;m1 = 1;m2 = 0.5;theta1 = pi/6;theta2 = 0;dtheta1 = 0;dtheta2 = 0;

output:

初始条件:第二摆杆长度是第一摆杆的一半,其余变量也不同。

output:

初始条件:第一摆杆长度、质量等于第一摆杆的,初始摆角不同。

【matlab混沌理论】1.4.双摆杆的不同参数模型的更多相关文章

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

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

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

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

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

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

  4. 《零起点,python大数据与量化交易》

    <零起点,python大数据与量化交易>,这应该是国内第一部,关于python量化交易的书籍. 有出版社约稿,写本量化交易与大数据的书籍,因为好几年没写书了,再加上近期"前海智库 ...

  5. 【转】漫谈ANN(2):BP神经网络

    上一次我们讲了M-P模型,它实际上就是对单个神经元的一种建模,还不足以模拟人脑神经系统的功能.由这些人工神经元构建出来的网络,才能够具有学习.联想.记忆和模式识别的能力.BP网络就是一种简单的人工神经 ...

  6. 神经网络4_BP神经网络

    sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...

  7. 止损+TS

    单策略单品种单策略多品种多策略单品种和加仓多策略多品种静态仓位和动态仓位 金肯特钠(kingKeltner)布林强盗(BollingerBandit)动态突破(DynamicBreakOutII)恒温 ...

  8. [原创]AHA大会回顾

    AHA大会回顾 缘起 AHA之前参加了Daniel的培训,了解到AHA大会,觉得很高大上,开始有些心动.考虑到是工作时间,而且是外地,所以也就停留在心动层面了.之后与伯薇和四正吃饭,听说他们要去参加这 ...

  9. 对GBK的理解(内附全部字符编码列表):扩充的2万汉字低字节的高位不等于1,而且还剩许多编码空间没有利用

    各种编码查询表:http://bm.kdd.cc/ 由于GB 2312-80只收录6763个汉字,有不少汉字,如部分在GB 2312-80推出以后才简化的汉字(如“啰”),部分人名用字(如中国前总理朱 ...

  10. 汉字与区位码互转(天天使用的String存储的是内码),几个常见汉字编码,附有读书笔记

    汉=BABA(内码)=-A0A0=2626(区位码)字=D7D6(内码)=-A0A0=5554(区位码) 各种编码查询表:http://bm.kdd.cc/ “啊”字是GB2312之中的第一个汉字,会 ...

随机推荐

  1. 文心一言(ERNIE Bot)初体验

    引言 几个月前向百度提交了文心一言的体验申请,这两天收到了可以体验的通知,立马体验了一把.总体来说,文心一言基本上能做到有问必答,但是一些奇葩的问题还是会难住这位初出茅庐的 AI. 分享体验 我先后问 ...

  2. Jenkins 相关配置

    https://www.cnblogs.com/zylyehuo/ 参考链接 解决:Jenkins: signature verification failed in update site 'def ...

  3. [编程基础] Python内置模块collections使用笔记

    collections是Python标准库中的一个内置模块,它提供了一些额外的数据结构类型,用于增强Python基础类型如列表(list).元组(tuple)和字典(dict)等.以下是对collec ...

  4. Go,从命名开始!Go的关键字和标识符全列表手册和代码示例!

    关注TechLeadCloud,分享互联网架构.云服务技术的全维度知识.作者拥有10+年互联网服务架构.AI产品研发经验.团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师, ...

  5. .NET应用多语言-葡萄牙语软件,如何处理本地化,特别是数字的转换和计算

    在葡萄牙语软件中,数字本地化通常涉及小数点和千位分隔符的使用.在葡萄牙语中,小数点用","表示,而不是英语中使用的".".千位分隔符通常是一个空格或一个点. 例 ...

  6. Solution -「HNOI 2016」最小公倍数(lacks of code)

    Description Link. 给出一个带权无向图,边权为 \(2^{a}\cdot3^{b}\) 形式. 给出 \(q\) 组形如 \(u,v,a,b\) 的询问,问 \(u,v\) 中是否存在 ...

  7. 6.2 Sunday搜索内存特征

    Sunday 算法是一种字符串搜索算法,由Daniel M.Sunday于1990年开发,该算法用于在较长的字符串中查找子字符串的位置.算法通过将要搜索的模式的字符与要搜索的字符串的字符进行比较,从模 ...

  8. interface 接口相关【GO 基础】

    〇.接口简介 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节.也就是说,接口可以将一种或多种特征归纳到一起,其他不同的对象通过实现此接口,来表示可以 ...

  9. 普冉PY32系列(九) GPIO模拟和硬件SPI方式驱动无线收发芯片XL2400

    目录 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境 普冉PY32系列(三) P ...

  10. Kafka 在分布式系统中的 7 大应用场景

    Kafka 介绍 Kafka 是一个开源的分布式流式平台,它可以处理大量的实时数据,并提供高吞吐量,低延迟,高可靠性和高可扩展性.Kafka 的核心组件包括生产者(Producer),消费者(Cons ...