求系统在输入f(t)=sin(1/2*pi*t)时的零状态响应的matlab的代码
时间: 2024-03-22 22:38:26 浏览: 78
假设系统的输入-输出关系可以用线性微分方程表示,则系统的零状态响应可以通过求解该微分方程的齐次解得到。以下是求解过程和 MATLAB 代码:
假设系统的微分方程为:
y''(t) + 2y'(t) + 5y(t) = x(t)
令输入信号为:x(t) = sin(1/2*pi*t)
则该微分方程的齐次解可以表示为:
y_h(t) = c_1*e^(-t)*cos(2t) + c_2*e^(-t)*sin(2t)
其中,c_1 和 c_2 是待定常数,需要根据初始条件求解。
由于输入信号是正弦波,可以通过欧拉公式将其表示为复指数形式:
x(t) = (1/2)*[e^(j*1/2*pi*t) - e^(-j*1/2*pi*t)]
因此,可以采用复指数形式的通解表示法,得到系统的零状态响应为:
y(t) = y_h(t) + y_p(t)
其中,y_p(t) 是特解,可以通过猜测法得到:
y_p(t) = (1/5)*sin(1/2*pi*t)
最终,系统的零状态响应为:
y(t) = c_1*e^(-t)*cos(2t) + c_2*e^(-t)*sin(2t) + (1/5)*sin(1/2*pi*t)
下面是求解过程的 MATLAB 代码:
```matlab
syms t y(t)
% 定义微分方程
eqn = diff(y,t,2) + 2*diff(y,t) + 5*y == sin(1/2*pi*t);
% 求解微分方程的齐次解
y_h = dsolve(diff(y,t,2) + 2*diff(y,t) + 5*y == 0, y(0)==0, Dy(0)==0);
% 求解微分方程的特解
y_p = (1/5)*sin(1/2*pi*t);
% 求解常数 c1 和 c2
[c1, c2] = solve(subs(y(0)==0, y), subs(Dy(0)==0, diff(y,t)));
% 求解零状态响应
y_zs = simplify(subs(y, y_h+y_p));
% 绘制零状态响应波形图像
t = linspace(-10, 10, 1000);
f = sin(1/2*pi*t);
y = subs(y_zs, t);
plot(t, y, 'r', t, f, 'b--');
xlabel('Time (s)');
ylabel('Amplitude');
legend('y(t)', 'f(t)');
title('Zero-state response');
```
运行以上代码,即可绘制出系统在输入 f(t) = sin(1/2*pi*t) 时的零状态响应波形图像。其中,红色线条表示系统的响应,蓝色虚线表示输入信号。
阅读全文