对于一个已知的线性时不变(LTI)系统,其微分方程表示为 y’‘(t) + y’(t) =cost·ε(t),且y(0)=1,y'(t)=1,编写求该系统的全响应、零输入响应、零状态响应、单位冲激响应和单位阶跃响应,并画出各响应曲线。MATLAB代码
时间: 2024-12-22 12:29:04 浏览: 129
对于给定的线性时不变(LTI)系统微分方程 `y''(t) + y'(t) = cos(t)*ε(t)`,其中初始条件 `y(0) = 1` 和 `y'(0) = 1`,以及单位冲激响应 `δ(t)`,我们可以使用MATLAB来求解这个系统。但是,由于你没有提供系统的阻尼或增益信息,我们将假设这是一个简单的二阶线性常系数系统,可能是一阶系统的延拓。
首先,我们需要定义系统函数,通常用 `s` 表示频率域变量,然后根据微分方程找到它的传递函数。由于没有具体信息,我们假设它是无阻尼的 (`ω_n = sqrt(λ)`,其中 λ 是方程中的常数):
```matlab
% 假设 λ = 0 (无阻尼情况)
lambda = 0;
s = tf('s'); % 创建 s 的符号表达式
% 定义传递函数
H = 1/(s^2 + s); % 对应于 y''(t) + y'(t)
```
现在我们可以分别计算:
1. **全响应**(含有输入 ε(t) 的情况): 用 `lsim` 函数,输入是 `cos(t)` 和 `H`。
2. **零输入响应**:当输入为 0 时,`lsim(cos(t), H, [0 t_end])`。
3. **零状态响应**:这是在系统开始时没有内部记忆的情况下对输入的响应,可以直接计算 `cos(t)` 乘以 `exp(-t)`(因为初始状态为 y(0)=1,y'(0)=1),即 `cos(t) * exp(-t)`。
4. **单位冲激响应**:直接从传递函数得到,`impulse(H)` 或者 `exp(-t) * unit_impulse(t)`。
5. **单位阶跃响应**:`step(H)`。
为了绘制曲线,使用 `plot` 函数结合上述结果:
```matlab
% 全响应
response_full = lsim(cos, H, [0 10]); % 假设时间范围为 [0, 10]
plot(response_full)
% 零输入响应
response_zero_input = lsim(zeros(size(cos)), H, [0 10]);
hold on
plot(response_zero_input, 'r--') % 用红色虚线显示
% 零状态响应
response_zero_state = cos([0:0.01:10]) .* exp(-[0:0.01:10]);
hold on
plot(response_zero_state, 'g:', 'LineWidth', 2) % 绿色点线
% 单位冲激响应
impulse_response = impulse(H);
hold on
plot(impulse_response, 'b:') % 蓝色点线
% 单位阶跃响应
step_response = step(H);
hold on
plot(step_response, 'm') % 橙色实线
legend('全响应', '零输入响应', '零状态响应', '单位冲激响应', '单位阶跃响应')
xlabel('Time (s)')
ylabel('Amplitude')
grid on
```
请注意,你需要根据实际情况调整时间范围 `t_end`。另外,如果你知道系统具有特定的阻尼,则传递函数 `H` 将会不同。
阅读全文