用matlab一.求解系统的零状态响应和零输入响应 2y''(t)+ 2y'(t)+ 77y(t) = f(t) 在t>=0时接入激励f(t)=10*sin(2 *pi *t), y'(0) =2, y(0) =1,求零状态响应,求零输入响应并图形展示
时间: 2023-07-30 07:05:08 浏览: 99
离散时间系统零状态响应的求解-利用MATLAB进行系统的时域分析
首先,我们需要将系统的微分方程表示为状态空间形式:
```
x1' = x2
x2' = -38.5x1 - x2 + 5u
y = x1
```
其中,x1 和 x2 分别表示系统的状态变量,u 表示输入,y 表示输出。
然后,我们可以使用 Matlab 中的 `ss` 函数将其转换为状态空间模型:
```
A = [0 1; -77/2 -1];
B = [0; 5];
C = [1 0];
D = 0;
sys = ss(A, B, C, D);
```
接下来,我们可以使用 `initial` 函数求解零状态响应:
```
[t, y] = initial(sys, [1; 2]);
```
这里的初始状态为 `[1; 2]`,即 `y(0) = 1` 和 `y'(0) = 2`。
同样地,我们可以使用 `lsim` 函数求解零输入响应:
```
t = 0:0.01:10;
u = 10*sin(2*pi*t);
[y, t, x] = lsim(sys, u, t, [1; 2]);
```
这里的输入为 `f(t) = 10*sin(2*pi*t)`,t 为时间向量,初始状态为 `[1; 2]`。
最后,我们可以使用 `plot` 函数将结果可视化:
```
subplot(2, 1, 1);
plot(t, y(:, 1));
title('Zero-State Response');
xlabel('Time');
ylabel('Output');
grid on;
subplot(2, 1, 2);
plot(t, x(:, 1));
title('Zero-Input Response');
xlabel('Time');
ylabel('State');
grid on;
```
其中,左图为零状态响应,右图为零输入响应。
完整代码如下:
```
A = [0 1; -77/2 -1];
B = [0; 5];
C = [1 0];
D = 0;
sys = ss(A, B, C, D);
[t, y] = initial(sys, [1; 2]);
t = 0:0.01:10;
u = 10*sin(2*pi*t);
[y, t, x] = lsim(sys, u, t, [1; 2]);
subplot(2, 1, 1);
plot(t, y(:, 1));
title('Zero-State Response');
xlabel('Time');
ylabel('Output');
grid on;
subplot(2, 1, 2);
plot(t, x(:, 1));
title('Zero-Input Response');
xlabel('Time');
ylabel('State');
grid on;
```
阅读全文