matlab系统建模案例
时间: 2023-06-12 15:07:51 浏览: 54
以下是一个简单的 MATLAB 系统建模案例:
假设你有一个小球,它从一定高度落下并弹起,我们想要建立一个数学模型来描述它的运动。首先,我们需要考虑它的物理特性和运动规律,可以得到以下假设:
- 小球在落下和弹起时只受重力和弹力的作用;
- 小球的质量是已知的;
- 弹力与小球落地前的速度成正比,即弹力越大,小球反弹的速度越快。
基于这些假设,我们可以建立以下数学模型:
1. 定义变量
我们定义 $h$ 为小球的高度(以米为单位),$v$ 为小球的速度(以米/秒为单位),$m$ 为小球的质量(以千克为单位),$g$ 为重力加速度(以米/秒²为单位),$k$ 为弹力系数(以牛/米为单位)。
2. 建立微分方程
小球在空中的运动可以用以下微分方程来描述:
$$
m\frac{\mathrm{d}^2h}{\mathrm{d}t^2} = -mg + k\frac{\mathrm{d}h}{\mathrm{d}t}
$$
其中,$m\frac{\mathrm{d}^2h}{\mathrm{d}t^2}$ 表示小球的加速度,$-mg$ 是小球受到的重力,$k\frac{\mathrm{d}h}{\mathrm{d}t}$ 是小球受到的弹力。
3. 解微分方程
我们可以使用 MATLAB 中的 ode45 函数来解微分方程,得到小球的高度和速度随时间的变化:
```
function [t, h, v] = ball_drop(m, k, h0, v0, tspan)
g = 9.8; % 重力加速度
f = @(t, y) [y(2); -g + k/m*y(2)]; % 定义微分方程
[t, y] = ode45(f, tspan, [h0; v0]); % 解微分方程
h = y(:, 1); % 得到小球的高度
v = y(:, 2); % 得到小球的速度
end
```
4. 绘制图像
最后,我们可以使用 MATLAB 的 plot 函数来绘制小球的高度和速度随时间的变化曲线:
```
m = 0.1; % 小球的质量
k = 0.2; % 弹力系数
h0 = 10; % 小球的初始高度
v0 = 0; % 小球的初始速度
tspan = [0, 5]; % 时间范围
[t, h, v] = ball_drop(m, k, h0, v0, tspan); % 求解微分方程
subplot(2, 1, 1); % 绘制小球的高度随时间的变化曲线
plot(t, h);
xlabel('Time (s)');
ylabel('Height (m)');
title('Ball Drop');
subplot(2, 1, 2); % 绘制小球的速度随时间的变化曲线
plot(t, v);
xlabel('Time (s)');
ylabel('Velocity (m/s)');
```
运行以上代码,可以得到小球的高度和速度随时间的变化曲线。