已知系统的前递函数Ks+5ss+4s和反馈函数ss+6s+7ss+5s+6记住增益的范围为0到无穷请你根据根轨迹的定义求解根轨迹图使用matalab求解特别注意不能使用rlocus函数
根据根轨迹的定义,我们可以得到以下步骤:
- 求系统的传递函数H(s) = K(s+5)/(s^2+4s) * (s^2+6s+7)/(s^2+5s+6)
- 将H(s)化简,得到H(s) = K(s+5)(s+1)/(s+2)(s+3)(s+2+j)(s+2-j)
- 根据H(s)的极点和零点画出初始的根轨迹,其中极点为-2,-3,-2+j,-2-j,零点为-5,-1
- 根据增益的范围,从0开始不断增加K的值,每次增加一个很小的量,例如0.1
- 每次增加K的值后,重新计算H(s)的极点和零点,并画出新的根轨迹
- 重复步骤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 著作权归作者所有。请勿转载和采集!