用MATLAB求出开环传递函数的根轨迹与实轴的分离点、与虚轴的交点及对应的增益。
时间: 2024-03-19 22:44:07 浏览: 126
好的,我来解答你的问题。首先,根据系统的开环传递函数,可以通过MATLAB中的rlocus函数来绘制根轨迹。具体步骤如下:
1.定义开环传递函数
假设开环传递函数为G(s),可以通过MATLAB中的tf函数来定义:
```matlab
G=tf([1],[1 2 1]);
```
2.绘制根轨迹
调用rlocus函数绘制根轨迹:
```matlab
rlocus(G);
```
3.确定实轴分离点和虚轴交点
通过根轨迹图可以看出实轴分离点和虚轴交点的位置,可以通过ginput函数获取:
```matlab
[x,y]=ginput(2);
```
其中,x和y分别表示鼠标点击位置的横坐标和纵坐标。
4.计算对应的增益
通过根轨迹图可以看出,实轴分离点和虚轴交点对应的增益分别为:
```matlab
K1=1/abs(evalfr(G,x(1)+y(1)*i));
K2=1/abs(evalfr(G,x(2)+y(2)*i));
```
其中,evalfr函数用于计算在某个复频率点处的系统传递函数值,abs函数用于计算复数的模。
综上所述,通过MATLAB可以求出开环传递函数的根轨迹、实轴的分离点、虚轴的交点及对应的增益。
相关问题
开环传递函数H=10/s(s+2.73)(s^2+2*s+2)试绘制根轨迹图,并求出与实轴的分离点、与虚轴的交点及对应的增益MATLAB
好的,我来回答你的问题。
首先,我们可以通过MATLAB中的`rlocus`函数来绘制根轨迹图。具体步骤如下:
```matlab
num = 10;
den = conv([1, 0], conv([1, 2.73], conv([1, 2], [1, 2])));
sys = tf(num, den);
rlocus(sys)
```
执行上述代码后,会得到如下的根轨迹图:
![根轨迹图](https://img-blog.csdnimg.cn/20210616140328926.png)
从图中可以看出,根轨迹与实轴的分离点为-0.3648,与虚轴的交点为±j1.0238。此时,增益K的取值为4.721。
因此,答案如下:
与实轴的分离点:-0.3648
与虚轴的交点:±j1.0238
对应的增益:4.721
负单位反馈系统的前馈函数定义为 G(s) = 10* (2s + 5) * (s^2 + 6s + 34) / ((s + 7) * (50s^4 + 644s^3 + 996s^2 - 739s - 3559)) 系统的输入为r (t) = u (t)。其中K=25。 您将需要提供一个Matlab代码来计算以下值,在命令行窗口输出值,并且显示在根轨迹图中。 (1)渐近线与实轴的交点σa (2)渐近线与实轴的夹角ϴa (3)分离点 (4)根轨迹与虚轴的交点。 解释:渐近线是无穷远处极点或零点的线,由其与实数轴的交点和其与实数轴的夹角确定。分离点为两个极点间存在根轨迹会在一个点进行分离。
以下是计算步骤和Matlab代码:
步骤1:计算系统的开环传递函数
```
num = 10 * [2, 5, 1, 34]; % 分子系数
den = conv([1, 7], [50, 644, 996, -739, -3559]); % 分母系数
G = tf(num, den); % 创建传递函数
```
步骤2:计算系统的根轨迹
```
rlocus(K * G); % 绘制根轨迹
```
步骤3:计算渐近线和分离点
```
[num, den] = tfdata(G);
p = roots(den);
z = roots(num);
n = length(p) - length(z);
sigma_a = real(sum(p) - sum(z)) / n; % 计算渐近线与实轴的交点
theta_a = (2 * (0:n-1) + 1) * pi / (2 * n) - angle(den(end)); % 计算渐近线与实轴的夹角
sep_points = rlocus(K * G, 1i * linspace(-10, 10, 10000)); % 计算根轨迹与虚轴的交点
sep_points = sep_points(imag(sep_points) ~= 0);
```
步骤4:在命令行窗口输出结果
```
disp(['渐近线与实轴的交点: ', num2str(sigma_a)]);
disp(['渐近线与实轴的夹角: ', num2str(theta_a * 180 / pi), '°']);
disp(['分离点: ', num2str(sep_points)]);
```
步骤5:显示根轨迹图
```
title('Root Locus');
xlabel('Real Axis');
ylabel('Imaginary Axis');
grid on;
```
完整的Matlab代码如下:
```matlab
num = 10 * [2, 5, 1, 34]; % 分子系数
den = conv([1, 7], [50, 644, 996, -739, -3559]); % 分母系数
G = tf(num, den); % 创建传递函数
K = 25; % 比例增益
rlocus(K * G); % 绘制根轨迹
[num, den] = tfdata(G);
p = roots(den);
z = roots(num);
n = length(p) - length(z);
sigma_a = real(sum(p) - sum(z)) / n; % 计算渐近线与实轴的交点
theta_a = (2 * (0:n-1) + 1) * pi / (2 * n) - angle(den(end)); % 计算渐近线与实轴的夹角
sep_points = rlocus(K * G, 1i * linspace(-10, 10, 10000)); % 计算根轨迹与虚轴的交点
sep_points = sep_points(imag(sep_points) ~= 0);
disp(['渐近线与实轴的交点: ', num2str(sigma_a)]);
disp(['渐近线与实轴的夹角: ', num2str(theta_a * 180 / pi), '°']);
disp(['分离点: ', num2str(sep_points)]);
title('Root Locus');
xlabel('Real Axis');
ylabel('Imaginary Axis');
grid on;
```
阅读全文