数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 3775|回复: 0

控制工程基础中在画根轨迹时候求分离点以及渐进线的程序:

[复制链接]
发表于 2005-1-24 23:13:35 | 显示全部楼层 |阅读模式
<>程序之二</P>
<>控制工程基础中在画根轨迹时候求分离点以及渐进线的程序:
分离点的:
function [K,S]=flds(G)
G=tf(G);
num=G.num{1};
den=G.den{1};
dt=get(G,'inputdelay');
syms ns ds
a=conv(den,polyder(num));
b=conv(num,polyder(den));
a1=([zeros(1,length(b)-length(a)),a]-b);
a2=dt*conv(num,den);
ss=roots([zeros(1,length(a2)-length(a1)),a1]-a2);
k=[];
s=[];
for i=1:length(ss)
    ns=poly2sym(num,'s');
    ds=poly2sym(den,'s');
    Kk(i)=-subs(ns/ds,'s',ss(i));
    if Kk(i)&gt;0
        k=[k,Kk(i)];
        s=[s,ss(i)]
        disp (s)
        
    else
        S='此系统无分离点!';
    end
end</P>
<>
渐进线:
function s=jjx(G)
G=tf(G);
num=G.num{1};
den=G.den{1};
dt=get(G,'inputdelay');
p=roots(den);
z=roots(num);
n=length(p);
m=length(z);
if dt==0
     if n&gt;m
         s=(sum(p)-sum(z))/(n-m);
         sd=[];
         if nargout &lt;1
             for i=1:n-m
                 sd=[sd,s];
             end
             Ga=zpk([],sd,1);
             hold on;
             [r,k]=rlocus(Ga);
             for i=1:n-m
                 plot(real(r(i,),imag(r(i,),'r:');
             end
         end
         
else
     disp('没有渐进线')
     s=[];
end
else
    a=get(gca,'xlim');
     b=pi/dt;
     line(a,[b b],'linesty','r:');
     line(a,[-b -b],'linesty','r:');
end

</P>
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-11-27 00:30 , Processed in 0.057139 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表