qq2132008 发表于 2008-12-2 18:13

[求助]鲁棒控制遇到奇异矩阵怎么办?

我用hinfsyn函数设计了一个控制器:
=hinfsyn(sys,nmeas,ncon,gmin,gmax,tol);

出现了如下错误:
Warning: Matrix is singular to working precision.
> In hinf_st at 49
In hinfsyn at 129
??? Error using ==> norm
NaN or Inf prevents convergence.

Error in ==> hinf_st at 49
norm2 = norm(d11*(eye(nm1)-(d21\'/(d21*d21\'))*d21));

Error in ==> hinfsyn at 129
= hinf_st(p,nmeas,ncon,gmin,gmax,quiet);

我对sys进行奇异值分解,结果如下:
ans=eig(a'*a);sigular=sqrt(ans)
sigular= 1.0e+004 *
    1.0e+004 *
    [0.0001, 0.0001,0.0001,0.0001,0.0001 ,0.0001, 0.0001 ,0.0001,0.0003,0.0097,0.0137 ,0.0288 ,0.0948,0.2088,
0.2775,2.5245]'
请问这个问题怎么处理,谢谢

[ 本帖最后由 xmwhit 于 2008-12-16 21:06 编辑 ]

ll_18301 发表于 2008-12-6 18:50

不满足DGKF法的某些约束条件,MATLAB把它解释为Robust control toolbox 3.0 的一个bug.
你可以采用LMI方法求解,hinflmi
Glmi=ltisys(sys.a, sys.b, sys.c, sys.d)
=hinflmi(Glmi,, 0, 0.001, )
=unpck(Klmi);
Klmi=ss(ka, kb, kc, kd)

[ 本帖最后由 ll_18301 于 2008-12-6 18:56 编辑 ]

qq2132008 发表于 2008-12-7 15:29

非常感谢ll_18301。
我尝试过用LMI,在计算结束后给出这样的提示:
Warning:the controller has fast modes (modulus > 1e6)
   Increase OPTIONS(2) or GAMMA to eliminate fast dynamics
不知道是什么意思?这个时候控制器已经计算出来了。
还有一个问题是不清除hinfsyn不满足DGKF的哪一个条件,对于 D12 must be a "tall" matrix with full "column" rank.D21must be a "fat" matrix with full "row" rank.这个条件是满足的。
不清除问题出在什么地方,如何处理应用hinfsyn带来的问题。
‘Robust control toolbox 3.0 的一个bug’.这些约束条件是对命令hinfsyn应用的限制,还是在理论上就不存在解呢?
本人认为利用H无穷设计方法,理论上是可以计算出控制器的,也就是说利用hinfsyn命令,可以解决所有控制器设计的问题。而并不一定要用到LMI。这是两种设计方法而已。因此对hinfsyn出现的这种问题产生好奇,很想弄清楚问题出在哪里,如何解决。
再一次感谢ll_18301,希望能再给本人点提示,不胜感激
页: [1]
查看完整版本: [求助]鲁棒控制遇到奇异矩阵怎么办?