hinfnorm command
古いコメントを表示
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 件のコメント
Oleg Komarov
2012 年 6 月 5 日
Negative by how much?
M.Mohsin Siraj
2012 年 6 月 6 日
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.
Walter Roberson
2012 年 8 月 24 日
(This message should not be closed, just cleaned up.)
回答 (16 件)
Suat Gumussoy
2012 年 6 月 14 日
1 投票
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
2012 年 6 月 14 日
1 投票
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.
Suat Gumussoy
2012 年 6 月 14 日
1 投票
B data has incompatible dimensions.
Suat Gumussoy
2012 年 6 月 14 日
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.
Suat Gumussoy
2012 年 6 月 14 日
1 投票
Which matlab version do you have?
Suat Gumussoy
2012 年 6 月 14 日
1 投票
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.
Suat Gumussoy
2012 年 6 月 14 日
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.
Suat Gumussoy
2012 年 6 月 14 日
1 投票
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.
Suat Gumussoy
2012 年 6 月 20 日
1 投票
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,.).
M.Mohsin Siraj
2012 年 6 月 14 日
M.Mohsin Siraj
2012 年 6 月 14 日
M.Mohsin Siraj
2012 年 6 月 14 日
M.Mohsin Siraj
2012 年 6 月 14 日
0 投票
1 件のコメント
Jan
2012 年 7 月 8 日
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
2012 年 6 月 14 日
0 投票
1 件のコメント
Suat Gumussoy
2012 年 7 月 13 日
Yes, they do support descriptor systems.
M.Mohsin Siraj
2012 年 6 月 15 日
0 投票
2 件のコメント
Craig
2012 年 6 月 15 日
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
2012 年 6 月 15 日
M.Mohsin Siraj
2012 年 6 月 30 日
2 件のコメント
Suat Gumussoy
2012 年 7 月 13 日
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);
Suat Gumussoy
2012 年 7 月 13 日
Stability can be easily checked by isstable(sys).
この質問は閉じられています。
カテゴリ
ヘルプ センター および File Exchange で State-Space Control Design についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!