开环函数为G(s)=k/s(s+1)(s+5),用matlab编写脚本程序,绘制根轨迹图确定k=1,10,100时的闭环特征根
时间: 2024-03-27 22:38:21 浏览: 30
好的,下面是用Matlab编写的脚本程序,绘制根轨迹图并确定不同k值下的闭环特征根:
```matlab
num = 1;
den = [1 6 5 0];
G = zpk([],[-1 -5],num);
k_values = [1 10 100];
figure;
hold on;
for k = k_values
rlocus(k*G);
end
title('Root Locus for G(s)=k/s(s+1)(s+5)');
xlabel('Real Axis');
ylabel('Imaginary Axis');
grid on;
for k = k_values
closed_loop_poles = roots([1 6 5 k]);
fprintf('k = %d: %s\n', k, mat2str(closed_loop_poles));
end
```
首先,我们定义开环传递函数G为一个零点在原点,两个极点在-1和-5的系统。
然后,我们使用rlocus函数在根轨迹图上绘制k=1,10,100时的根轨迹。
最后,使用roots函数计算每个k值下的闭环特征根,并输出到命令窗口。
注意,Matlab的rlocus函数绘制的根轨迹图可能和Python的结果略有不同,但是计算出来的闭环特征根应该是一致的。
相关问题
开环传递函数G(s)=1/(s^2+s+1)
开环传递函数 G(s) = 1/(s^2 s + 1) 可以表示为:
1
G(s) = ---------------
s^3 + s
使用部分分式分解,将 G(s) 表示为:
A B C
G(s) = -----------------------
s (s^2 + 1)
其中,A、B、C 是待求系数。
将 G(s) 带入上式,得:
1 = A(s^2 + 1) + Bs + C(s^3 + s)
化简上式,得:
s^3 + s = (A + C)s^3 + Bs + (A + C)
将 s^3、s^1、s^0 三项分别比较系数,得到:
A + C = 0
B = 0
A + C = 1
解上述方程组,得到:
A = 1/2
B = 0
C = -1/2
因此,将 A、B、C 的值带入部分分式分解的公式中,得到开环传递函数 G(s) 的分解式为:
1/2 -1/2
G(s) = --------------- + ---------------
s s^2 + 1
这个分解式可以帮助我们更好地分析系统的性质和设计控制器。
开环函数为G(s)=k/s(s+1)(s+5),编写脚本程序,绘制k=1,10,100时的伯德图
以下是 MATLAB 的脚本程序:
```matlab
% 定义开环传递函数
G = tf([1], [1 6 5 0]);
% 绘制伯德图
figure;
bode(G);
grid on;
hold on;
% 绘制 k = 1 时的伯德图
G1 = feedback(G, 1);
bode(G1);
% 绘制 k = 10 时的伯德图
G2 = feedback(G, 10);
bode(G2);
% 绘制 k = 100 时的伯德图
G3 = feedback(G, 100);
bode(G3);
% 添加图例
legend('G', 'k=1', 'k=10', 'k=100');
```
运行该程序,即可得到 k = 1, 10, 100 时的伯德图。