怎么用MATLAB编写差分方程的程序?

输入额e(k)=1;输出为u(k);k=1:1:100;
u(k)=173.2e(k)-346.3e(k-1)+173e(k-2)+1.951u(k-1)-0.9512u(k-2)

方程中涉及u(k-1)和u(k-2)两项,所以还必须给出初始状态u(0)和u(-1)。否则无法求解。
另外,e(k)=1是指k=1:100中e始终为1么?追问

初始时刻应该都是取0吧?e(0)=e(-1)=u(0)=u(-1)=0;e(k)表示单位阶跃输入;采样时间ts=0.0001;
time(k)=k*ts;
plot(time,e,'k',time,u,'k');

追答

我不管你的采样时间,只讨论离散部分。

e = zeros(102, 1); % 把-1和0也算进去,共102项
u = zeros(102, 1);
e(3:end) = 1;
for k = 3:102
u(k) = 173.2*e(k)-346.3*e(k-1)+173*e(k-2)+1.951*u(k-1)-0.9512*u(k-2);
end
% 去掉前两项,得到1...100的u
up = u(3:end);
ep = e(3:end);
stem(up);

温馨提示:答案为网友推荐,仅供参考
相似回答