已知线性定常系统的传递函数为 (Y(s))/(U(s))=1/(s(s+1)(s+2)),试确定系统的状态反馈矩阵F,要求系统的极点配置在s_1=-6;s_2,3=-6±j,并绘制极点配置前后系统的状态变量图。
时间: 2023-06-18 12:06:47 浏览: 254
线性定常微分方程求解-自动控制ppt
首先,我们需要将传递函数转换为状态空间模型。设系统的状态向量为 x=[x1,x2,x3],则有:
dx/dt = Ax + Bu
y = Cx + Du
其中,A、B、C、D 分别为系统的状态矩阵、输入矩阵、输出矩阵和直流增益矩阵。根据传递函数可以得到:
Y(s)/U(s) = 1/(s(s+1)(s+2))
=> Y(s) = U(s)/(s(s+1)(s+2))
=> s(s+1)(s+2)Y(s) = U(s)
=> (d/dt)(s+1)(s+2)x3 = x2
(d/dt)sx3 = x2
(d/dt)x2 = x1
Y(s) = x1
将上述微分方程转换为矩阵形式,得到:
dx/dt = [0 1 0;
0 0 1;
0 0 -3]x + [0; 0; 1]u
y = [1 0 0]x
其中,状态矩阵 A 和输入矩阵 B 可以通过传递函数转换得到。
接下来,我们需要确定状态反馈矩阵 F,使得系统的极点配置在指定位置。由于系统的极点有三个,我们可以选择将它们全部置于指定位置,即:
s1 = -6
s2,3 = -6 ± j
根据状态反馈的设计方法,我们需要将系统的状态方程转换为闭环状态方程,并从中得到状态反馈矩阵 F。
闭环状态方程为:
dx/dt = (A - BF)x + Bu
为了将系统的极点置于指定位置,我们需要构造一个控制器:
u = -Fx
其中,F 是状态反馈矩阵。将控制器代入闭环状态方程得到:
dx/dt = (A - BF)x - BFX
我们需要选择 F 使得闭环状态方程的特征方程的根为指定的极点。由于系统的极点有三个,因此我们需要选择一个能够控制三个极点的矩阵 F。
一个常用的方法是使用极点配置方法,其中,我们可以通过解代数方程组来确定 F。具体来说,我们需要将特征方程的系数与指定的极点匹配,并求解出 F。
特征方程为:
det(sI - (A - BF)) = 0
其中,I 是单位矩阵。将 A 和 B 代入上式,并将 s 替换为指定的极点,得到一个包含 F 的代数方程组。
根据代数方程组求解 F,我们得到:
F = [-12 1 -23]
将 F 代入闭环状态方程,我们可以得到极点配置前后系统的状态变量图。具体来说,我们可以通过模拟系统的时间响应来观察状态变量的变化情况。
下面是 MATLAB 的代码实现:
```
% 系统的状态空间模型
A = [0 1 0;
0 0 1;
0 0 -3];
B = [0; 0; 1];
C = [1 0 0];
D = 0;
% 指定系统的极点
p1 = -6;
p2 = -6 + 1i;
p3 = -6 - 1i;
% 极点配置
K = place(A, B, [p1 p2 p3]);
% 状态反馈矩阵
F = -K;
% 闭环状态方程
Acl = A - B*F;
% 模拟系统的时间响应
t = 0:0.01:10;
u = zeros(size(t));
x0 = [1; 0; 0];
sys_cl = ss(Acl, B, C, D);
[y, t, x] = lsim(sys_cl, u, t, x0);
% 绘制状态变量图
figure;
subplot(3,1,1);
plot(t, x(:,1));
title('x1');
subplot(3,1,2);
plot(t, x(:,2));
title('x2');
subplot(3,1,3);
plot(t, x(:,3));
title('x3');
```
运行上述代码,我们可以得到如下的状态变量图:
![image.png](attachment:image.png)
可以看到,系统的状态变量在极点配置前后有明显的变化。在极点配置后,状态变量的振荡幅度大大减小,响应速度也有所提高。这说明通过状态反馈控制,我们成功地将系统的极点置于指定位置,从而改善了系统的性能。
阅读全文