单自由度振动方程与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显示为:

                                       

你可能感兴趣的:(单自由度振动方程与Matlab/Simulink求解)