二阶线性常系数微分方程的形式 d2y(t)2 dy(t)2y(t)2x(t) dt2 ndtn n 可以用来模拟许多物理系统。如车辆减震器系统,有 n k, v m 2km 其中n 为无阻尼固有频率, 称为阻尼比,m为车辆质量,k为弹簧的系数, v 为阻尼器粘度衡量系数。 考虑固定 1 / 2 ,m=1,k 分别取 0.09、1 和 4。利用函数 freqs 计算频 率在 w logspace(2, 2,100) 上(生成对数间距)的响应 H ( jw) 。使用 loglog 绘 图,在同一坐标轴上绘制三种 k 取值对应的幅频响应波特图,使用 semilogx 绘 图,在同一坐标轴上绘制相频波特图。设置时间为 t=linspace(0,30),绘制三个系 统对应的阶跃响应
时间: 2024-03-18 17:41:46 浏览: 72
第7讲 Matlab微分方程.ppt 讲解
以下是 MATLAB 的代码实现:
```matlab
% 定义系统参数
zeta = 1/2;
m = 1;
k = [0.09, 1, 4];
% 计算频率响应
w = logspace(-2, 2, 100);
for i = 1:length(k)
num = k(i);
den = [1, 2*zeta*w, w^2];
H = freqs(num, den, w);
% 绘制幅频响应波特图
subplot(2, 1, 1);
loglog(w, abs(H));
hold on;
% 绘制相频响应波特图
subplot(2, 1, 2);
semilogx(w, angle(H)*180/pi);
hold on;
end
% 设置图像标题和坐标轴标签
subplot(2, 1, 1);
title('Amplitude-frequency response');
xlabel('Frequency (rad/s)');
ylabel('Magnitude (dB)');
legend('k=0.09', 'k=1', 'k=4');
subplot(2, 1, 2);
title('Phase-frequency response');
xlabel('Frequency (rad/s)');
ylabel('Phase (degrees)');
legend('k=0.09', 'k=1', 'k=4');
% 绘制阶跃响应
t = linspace(0, 30);
for i = 1:length(k)
num = k(i);
den = [1, 2*zeta*w, w^2];
G = tf(num, den);
y = step(G, t);
figure;
plot(t, y);
title(sprintf('Step response for k=%.2f', k(i)));
xlabel('Time (s)');
ylabel('Amplitude');
end
```
这段代码首先定义了系统的参数,然后使用`freqs`函数计算了三个不同弹簧系数取值下的频率响应。接着,使用`loglog`和`semilogx`函数分别绘制了幅频响应波特图和相频响应波特图。最后,使用`step`函数绘制了三个系统的阶跃响应。
阅读全文