x(t+1)=2x(t)+u(t),y(t)=-2x(t-k),其中k是小于4个采样周期的未知延时,用Matlab绘制该系统的增广后的矩阵的谱半径随时延k大小变化情况
时间: 2023-06-16 16:04:08 浏览: 76
根据题目给出的系统模型,可以将其写成增广矩阵的形式:
```
[x(t+1)] [2 1][x(t)] [u(t)]
[y(t)] = [-2 0][x(t-k)] [0 ]
```
其中,`x(t)` 和 `x(t+1)` 是状态向量,`u(t)` 是控制向量,`y(t)` 是输出向量,矩阵 `[2 1;-2 0]` 是增广矩阵。
为了绘制谱半径随时延 `k` 大小变化的情况,需要先确定谱半径的计算方法。对于一个矩阵 `A`,它的谱半径定义为其所有特征值的模的最大值,即:
```
rho(A) = max(|lambda|),其中 lambda 是矩阵 A 的特征值
```
因此,我们需要先计算出增广矩阵的特征值,并取其模的最大值作为谱半径。
根据题目中给出的系统模型,可以得到其特征多项式为:
```
det(lambda*I - [2 1; -2 0]) = lambda^2 - 2*lambda - 2
```
解特征多项式得到特征值为:
```
lambda1 = 1 + sqrt(3)
lambda2 = 1 - sqrt(3)
```
因此,增广矩阵的特征值模为:
```
|lambda1| = 2.732
|lambda2| = 0.268
```
可以发现,特征值 `lambda1` 的模大于特征值 `lambda2` 的模,因此增广矩阵的谱半径为 `2.732`。
接下来,我们需要编写 Matlab 代码来绘制谱半径随时延 `k` 大小变化的情况。具体实现步骤如下:
1. 定义增广矩阵 `A` 和控制向量 `B`:
```
A = [2 1; -2 0];
B = [1; 0];
```
2. 定义时间延迟 `k` 的范围:
```
k_range = 0:3;
```
3. 定义一个长度为 `4` 的状态向量 `x` 和输出向量 `y`,并初始化为零向量:
```
x = zeros(2, 4);
y = zeros(1, 4);
```
4. 循环遍历时间延迟 `k` 的范围,计算增广矩阵的 `k` 步转移矩阵 `Ak` 和控制向量的 `k` 步转移矩阵 `Bk`:
```
for i = 1:length(k_range)
k = k_range(i);
Ak = eye(2);
for j = 1:k
Ak = Ak * A;
end
Bk = zeros(2, k+1);
Bk(:, end) = B;
end
```
5. 计算 `Ak` 和 `Bk` 的乘积 `AB`,并计算其特征值的模的最大值作为谱半径 `rho`:
```
AB = Ak * [x(:, end); Bk];
rho(i) = max(abs(eig(AB)));
```
6. 绘制谱半径随时间延迟 `k` 变化的曲线:
```
plot(k_range, rho);
xlabel('Time Delay k');
ylabel('Spectral Radius');
title('Spectral Radius vs. Time Delay');
```
完整的 Matlab 代码如下:
阅读全文