首页 > 其他分享 >【matlab混沌理论】1.3.双摆杆基本模型

【matlab混沌理论】1.3.双摆杆基本模型

时间:2023-12-12 21:58:10浏览次数:32  
标签:theta2 cos 双摆杆 1.3 theta1 L2 matlab m2 sin

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

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:

 

标签:theta2,cos,双摆杆,1.3,theta1,L2,matlab,m2,sin
From: https://www.cnblogs.com/liaowangta/p/17897905.html

相关文章

  • 【matlab混沌理论】1.2.洛伦兹吸引子
    ​【matlab混沌理论】1.2.洛伦兹吸引子Lorenz洛伦兹吸引子。定义洛伦兹函数组后,通过ode45函数求解此微分方程方程。input:%Lorenz函数的洛伦兹吸引子%2.定义模型参数sigma=10;beta=8/3;rho=28;%定义一组初始条件和一个时间间隔x0=[1,0,0.5];tspan=0......
  • 【matlab混沌理论】1.1.混沌理论简介
    ​混沌理论1.简介         混沌理论是一个跨学科的科学研究领域和数学分支,专注于对初始条件高度敏感的动力系统的基本模式和确定性定律,曾被认为具有完全随机的无序和不规则状态。混沌理论指出,在混沌复杂系统的表面随机性中,存在潜在的模式、互连、恒定反馈回路、重复、......
  • How to add your own library in MATLAB Simulink Library Browser
    https://www.youtube.com/watch?v=WxFBXEZo0VI&ab_channel=HighVoltageEngineeringbyMGNiasarhttps://ww2.mathworks.cn/help/simulink/ug/creating-block-libraries.htmlLibrariesinSimulinkMadeEasy:https://www.youtube.com/watch?v=xWmIACn5Te0&ab_channel......
  • 基于支持向量机SVM和MLP多层感知神经网络的数据预测matlab仿真
    1.算法运行效果图预览   2.算法运行软件版本matlab2022a 3.算法理论概述      支持向量机(SVM)和多层感知器(MLP)是两种常用的机器学习算法,它们在数据预测和分类任务中都有广泛的应用。下面将详细介绍这两种算法的原理和数学公式。 一、支持向量机(SVM) ......
  • 基于PSD-ML算法的语音增强算法matlab仿真
    1.算法运行效果图预览   2.算法运行软件版本matlab2022A 3.算法理论概述      PSD-ML(PowerSpectralDensityMaximumLikelihood)算法是一种基于最大似然估计的语音增强算法,通过对语音信号的功率谱密度进行估计,并利用估计结果对原始语音信号进行滤波处理,以达......
  • Simulink建模与仿真(6)-Simulink使用基础(MATLAB的单元与结构体)
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • 基于小波变换的分形信号r指数求解算法matlab仿真
    1.算法运行效果图预览   2.算法运行软件版本matlab2022a 3.算法理论概述       基于小波变换的分形信号r指数求解算法是一种利用小波变换和分形理论对信号进行分析的方法。下面将详细介绍这种算法的原理和数学公式。         分形信号是一种......
  • 基于FPGA的图像缩小算法实现,包括tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览   将FPGA的处理结果导出到matlab中显示图像效果:   2.算法运行软件版本vivado2019.2 matlab2022a 3.算法理论概述      图像放小算法主要通过抽取算法实现,常见的抽取算法最大值抽取,和均值抽取。其示意图如下所示:    ......
  • matlab安装遇到的问题
    1.找到的资源大部分都是百度网盘,博主没钱,下个16a要下20年了善用搜索找到了阿里云链接的半小时下完了然后课设要给同学发所以需要u盘2.在给移动u盘的时候报错对于目标文件系统过大U盘修改为NTFS格式第一种方法:1、点击【开始】然后找到【运行】,或者是直接使用快捷键WIN+R打......
  • 跟着王洋老师学编程 - 1.3 满天星星
    编写程序,以窗体形式实现“满天星星”代码一1importjava.awt.Frame;2importjava.awt.Color;3importjava.awt.Panel;4importjava.awt.Graphics;5publicclassStarSky{6publicstaticvoidmain(String[]args){7Framew=newFrame();8......