matlab求单自由度振动方程为,单自由度振动方程与Matlab/Simulink求解
1.问题

引用1:质量-弹簧-阻尼系统

引用2:模型推导
2.运动方程
Step1: 将微分方程最高阶变量移到等式左边

式1
Step2: 为每一阶微分式选择状态变量,最高阶除外
2.1

'
''
...

式2: 通项
2.2: 同时求导


2.3:整理为
形式,各阶微分式替换为状态变量


3.1 Matlab 求解代码与结果
clear;clc;
tic
options = odeset('reltol',1e-13);
tspan = [0,80];
[tspan,x]=ode45(@vibration,tspan,[1 1],options);
toc
figure
plot(tspan,x(:,1),tspan,x(:,2));
legend('Position','Acceleration')
%Time Domain
fig = figure('Name','Position');
plot(x(:,1))
%Purpose Function
function dxdt = vibration(~ ,x)
%for t= 0:0.01:40
%f = cos(10*t);
f=0;
c = 0.3;
k = 5;
m = 1;
dxdt = [0;0];
dxdt(1) = x(2);
dxdt(2) =(1/m)*( f - c*x(2) - k*x(1));
end

图1: 加速度与位移
3.2 Simulink程序图与结果

图2:初值x(0) = 0, x(1) = 1, m = 1, k = 4, c = 0.1
Scope显示为:

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)