单自由度振动方程与Matlab/Simulink求解

1.问题


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


引用2:模型推导

2.运动方程

Step1: 将微分方程最高阶变量移到等式左边


式1

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

2.1

x_{1}  = x

x_{2}  = x'

x_{3}  = x''

...

式2: 通项

2.2: 同时求导

\dot{x_{1} } =\dot{x}

\dot{x_{2} } =\ddot{x}

2.3:整理为\frac{dy}{dt} 形式,各阶微分式替换为状态变量

\frac{dx(1)}{dt} = \dot{x}  =x_{2} 

\frac{dx(2)}{dt} = \ddot{x} =\frac{1}{m} * (\mu -c*x(2)-k*x(1))


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显示为:

                                       
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 摘要:“微商,微分之商也。“微分和微商是高数的基本名词,它们的变化构成了高等数学入门的基础内容。因此,深入探究微分...
    Nino_Lau阅读 8,711评论 0 4
  • 转自 http://www.kylen314.com/archives/412 不显示坐标刻度: set(gca,...
    天之道天知道阅读 6,428评论 0 2
  • 深入理解傅里叶变换Mar 12, 2017 这原本是我在知乎上对傅立叶变换、拉普拉斯变换、Z变换的联系?为什么要进...
    价值趋势技术派阅读 11,106评论 2 2
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,235评论 0 2
  • 纪超,明天是你的阳历生日。提前祝你生日快乐,纪超你的阴历生日最厉害,全国人民都与你一起庆祝。
    王文琦阅读 1,157评论 0 0

友情链接更多精彩内容