hinfnorm command
4 views (last 30 days)
Show older comments
Hello I am using the command 'hinfnorm' to calculate the infinity norm of a descriptor linear system described by a ltisys command... Sometimes, hinfnorm command says that the descriptor linear system has closed-right-half plane poles while when i check the eigen values of that same system by eig(sys_descriptor)... the real part of the all the eigens values are negative. What is going wrong with this. is hinfnorm not reliable? or eig doesn't give eigen values for descriptor system?
Thanks in advance.
4 Comments
Jan
on 8 Jul 2012
Edited: Jan
on 8 Jul 2012
This became the ugliest thread in the forum, because necessary information about the problem are distributed to different answers and related comments are posted as further answers. Please follow the layout:
- All information, which define the problem, are found in the question.
- Clarifications of the problem are added by editing the question. The [EDITED] tag helps to recognize changes.
- Answers are posted as answers.
- Comments to answers are posted as comments to answers.
- Questions for clarifications are posted as comments to the question.
Thanks. The readability of the threads are important for all users.
Answers (16)
Suat Gumussoy
on 14 Jun 2012
Could you send me or post your plant that you used for norm computation? I suggest you to use norm(sys,inf,tol) with desired tolerance tol. norm function implements the state-of-the-art numerical methods and it is likely to give reliable answers.
Suat Gumussoy
on 14 Jun 2012
Some other things... assuming that plant matrices E,A,B,C,D, you can create and ss object by
sys = dss(A,B,C,D,E); and eigenvalues can be computed by pole(sys)
In order to compute eigenvalues of descriptor system, you need to do eig(A,E) since the system is descriptor and don't forget to exclude eigenvalues at infinity since these corresponds to the null space of E.
0 Comments
Suat Gumussoy
on 14 Jun 2012
As I pointed out earlier, svd plot (in this case bode) and norm(sys,inf) are consistent.
>> [f,w]=norm(sys,inf)
f =
0.0086
w =
0
Note that in 2012b, all norm computations are done via getPeakGain function which is the function norm relies on. I'll get back for hinfnorm.
0 Comments
Suat Gumussoy
on 14 Jun 2012
I double checked the computation in your version of MATLAB R2011a, norm(sys,inf) gives 0.0086 at frequency 0 and this is consistent with bode plot. Again getting back to hinfnorm.
0 Comments
Suat Gumussoy
on 14 Jun 2012
About hinfnorm... this function is not implemented to be used with descriptor systems. see line 45 in hinfnorm function
[a,b,c,d] = unpck(sys);
it passes a,b,c,d data not e. In fact, you may not pass e, since it gives an error as
K>> [a,b,c,d,e] = unpck(sys); Error using unpck Too many output arguments.
On the other hand, if you want to compute norm without e,
sys = ss(A,B,C,D); sys_lti = ltisys(A,B,C,D);
they give similar norm norm(sys,inf)
ans =
34.6214
>> hinfnorm(sys_lti,1e-6) norm between 34.6214 and 34.6215 achieved near 0.79022
If you want to use hinfnorm, since your E is not singular, you may write as ss object and then compute norm
sys1=ss(E\A,E\B,C,D); sys_lti1=pck(sys1.A,sys1.B,sys1.C,sys1.D) hinfnorm(sys_lti1,1e-6)
hinfnorm(sys_lti1,1e-6) norm between 0.0086415 and 0.0086415 achieved near 0
which gives similar result as norm(.,inf).
Hope this helps.
0 Comments
Suat Gumussoy
on 14 Jun 2012
You're welcome. If you have singular E, I suggest to use dss and create ss object. bode, sigma and norm are defined for descriptor systems. These functions are continuously updated and improved with each release whereas in general hinfnorm is not.
0 Comments
Suat Gumussoy
on 20 Jun 2012
Bode, sigma plot and norm commands work for descriptor systems. Assuming system matrices are a,b,c,d,e. Define your descriptor system as sys=dss(a,b,c,d,e) and you can use them as bode(sys), sigma(sys), norm(sys,.).
0 Comments
M.Mohsin Siraj
on 14 Jun 2012
1 Comment
Jan
on 8 Jul 2012
Please post comments to an answer as a comment, not as an additional answer. Details about your question should be added by editing the original question, such that readers get all required information in one message, not distributed over the question, some answers without a fixed order and some comments.
M.Mohsin Siraj
on 15 Jun 2012
2 Comments
Craig
on 15 Jun 2012
See the following release notes: http://www.mathworks.com/help/toolbox/control/rn/f0-82252.html
Release Notes: Version 7.0 (R2006a) Control System Toolbox Software
LTI Objects
Descriptor and Improper State-Space Models Fully Supported
There is now full support for descriptor state-space models with a singular E matrix. This now lets you build state-space representations, such as PID, and manipulate improper models with the superior accuracy of state-space computations. In previous versions, only descriptor models with a nonsingular E matrix were supported.
M.Mohsin Siraj
on 30 Jun 2012
2 Comments
Suat Gumussoy
on 13 Jul 2012
You're right. It should be called as L-infinity norm since it does not check whether the system is stable. However, when system is stable, L-infinity and H-infinity norms are equal. So user needs to check system stability himself. By the way, what you compute is h2 norm for h-infinity norm, you need
[hinf,f]=norm(sys,inf);
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!