根据根轨迹的定义,我们可以得到以下步骤:

  1. 求系统的传递函数H(s) = K(s+5)/(s^2+4s) * (s^2+6s+7)/(s^2+5s+6)
  2. 将H(s)化简,得到H(s) = K(s+5)(s+1)/(s+2)(s+3)(s+2+j)(s+2-j)
  3. 根据H(s)的极点和零点画出初始的根轨迹,其中极点为-2,-3,-2+j,-2-j,零点为-5,-1
  4. 根据增益的范围,从0开始不断增加K的值,每次增加一个很小的量,例如0.1
  5. 每次增加K的值后,重新计算H(s)的极点和零点,并画出新的根轨迹
  6. 重复步骤4和步骤5,直到K的值趋于无穷大或者根轨迹闭合为止

以下是matalab代码实现:

syms s K H = K*(s+5)/(s^2+4s) * (s^2+6s+7)/(s^2+5*s+6); H = simplify(H); [num, den] = numden(H); num = sym2poly(num); den = sym2poly(den);

% 初始化极点和零点 z = [-5 -1]; p = [-2 -3 -2+1i -2-1i]; k = 0:0.1:1000;

% 画出初始的根轨迹 figure; rlocus(num, den); title('Root Locus of the System');

% 开始增加K的值并重新计算根轨迹 for i=1:length(k) new_den = den + k(i)*conv([1 -z(1)], [1 -z(2)]); new_num = num * k(i) * (s+1); r = roots(new_den); r = r(imag(r)>=0); new_r = [r; z']; plot(real(new_r), imag(new_r), 'b'); hold on; plot(real(new_r), -imag(new_r), 'b'); hold on; end

% 添加图例 legend('Initial Root Locus', 'Final Root Locus')


原文地址: http://www.cveoy.top/t/topic/ftnj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录