2025年1月31日(M_1.5.4)

%% M_1.5.4
% ; 分号用于隐藏输出
clear;  % 清空工作区
clc;  % 清空命令行窗口
close all;  % 关闭所有图形窗口

%% 参数
t = 0:0.01:10;
wn = 5;  % (rad/s)
x0 = 1;  % (m)
v0 = 5;  % (m/s)

%% 创建一个 2×2 分块图布局 t1
% TileSpacing 属性设置为 'compact' 来减小图块的间距
t1 = tiledlayout(3, 1, 'TileSpacing', 'Compact');

%% 阻尼比 u = 1.1 过阻尼
u = 1.1;  % (Ns/m)
s1 = (-u+sqrt(u^2-1)) * wn;
s2 = (-u-sqrt(u^2-1)) * wn;
X1 = (v0-s2 * x0)/(s1-s2);
X2 = (v0-s1 * x0)/(s2-s1);
x1 = X1 * exp(s1 * t)+X2 * exp(s2 * t);

nexttile;
plot(t, x1);
grid on;
ylabel('x_{1}', 'FontName', 'Times New Roman', 'FontSize', 10');

%%  阻尼比 u = 0.1 小阻尼
u = 0.1;  % 数值覆盖
wd = sqrt(1-u^2) * wn;
X = sqrt(x0^2+(v0+u * wn * x0)^2/wd^2);
phi = atan((v0+u * wn * x0)/(x0 * wd));
x2 = exp(-u * wn * t) * X .* cos(wd * t-phi);
 
nexttile;
plot(t, x2)
grid on;
ylabel('x_{2}', 'FontName', 'Times New Roman', 'FontSize', 10');

%% 阻尼比 u = 0 无阻尼振动
u = 0;
X = sqrt(x0^2+(v0/wn)^2);
phi = atan(v0/(x0 * wd));
x3 = X * cos(wd * t-phi);

nexttile;
plot(t, x3)
grid on;
ylabel('x_{3}', 'FontName', 'Times New Roman', 'FontSize', 10');

%% 通过将 t 传递给 title、xlabel 和 ylabel 函数,显示共享标题和轴标签
title(t1, '不同阻尼比情况下的自由振动位移时程曲线', 'FontName', '黑体', 'FontSize', 10)

2025年1月31日(M_1.5.4)_第1张图片

你可能感兴趣的:(Matlab,振动力学,Matlab)