⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 opt_fun.m

📁 控制系统计算机辅助设计——MATLAB语言与应用(源代码)
💻 M
字号:
function y=opt_fun(x,G,key,r,k,dc)
ff0=1e10; a=[1,x(r+1:r+k)]; b=x(1:r+1); b(end)=a(end)*dc; g=tf(b,a); 
if key==1, 
   tau=x(end); if tau<=0, tau=eps; end, [n,d]=pade(tau,3); gP=tf(n,d);
else, gP=1; end
G_e=G-g*gP; G_e.num{1}=[0,G_e.num{1}(1:end-1)];
[y,ierr]=geth2(G_e); if ierr==1, y=10*ff0; else, ff0=y; end
% 子函数 geth2
function [v,ierr]=geth2(G)
G=tf(G); num=G.num{1}; den=G.den{1}; ierr=0; v=0; n=length(den); 
if abs(num(1))>eps
   disp('System not strictly proper'); 
   ierr=1; return
else, a1=den; b1=num(2:length(num)); end
for k=1:n-1
  if (a1(k+1)<=eps), ierr=1; return
  else,
     aa=a1(k)/a1(k+1); bb=b1(k)/a1(k+1); v=v+bb*bb/aa; k1=k+2;
     for i=k1:2:n-1
        a1(i)=a1(i)-aa*a1(i+1); b1(i)=b1(i)-bb*a1(i+1);
end, end, end
v=sqrt(0.5*v);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -