function IsStable(polynomial)
if AllNonZero(polynomial) == false
H=[]
elseif AllSameSign(polynomial) == false
H=[]
else
HurwitzMatrix(polynomial);
pm = length(polynomial);
while i=1:pm
minor(i)=det(polynomial(1:i,1:i));
end
if minor(i)>0
B=1
else
B=0
end
end
I am trying to run this code but get this error,
Undefined function or variable 'minor'.
Error in IsStable (line 12)
if minor(i)>0
Any suggestions? Thank you.

 Réponse acceptée

Torsten
Torsten le 19 Mar 2019

1 vote

Do you want a different value for B for each minor, i.e. B(i) instead of B ?
Then use
function IsStable(polynomial)
if AllNonZero(polynomial) == false
H = []
elseif AllSameSign(polynomial) == false
H = []
else
HurwitzMatrix(polynomial);
pm = length(polynomial);
for i = 1:pm
minor(i) = det(polynomial(1:i,1:i));
if minor(i) > 0
B(i) = 1
else
B(i) = 0
end
end
end

4 commentaires

Mughees Asif
Mughees Asif le 19 Mar 2019
Hi, no i just want the output to be either 1 (if all principle minors are more than 0) and 0 (if all the principle minors are less than 0). When I run your code, I get the following error,
Index in position 1 exceeds array bounds (must not exceed 1).
Error in IsStable (line 10)
minor(i) = det(polynomial(1:i,1:i));
Thank you.
Torsten
Torsten le 19 Mar 2019
function IsStable(polynomial)
if AllNonZero(polynomial) == false
H = []
elseif AllSameSign(polynomial) == false
H = []
else
HurwitzMatrix(polynomial);
pm = length(polynomial);
for i = 1:pm
minor(i) = det(polynomial(1:i,1:i));
end
B = Inf;
if minor > 0
B = 1;
else if minor < 0
B = 0;
end
end
To avoid the error, define the array/matrix "polynomial" you pass to "IsStable" properly.
Mughees Asif
Mughees Asif le 19 Mar 2019
This is not for a specific polynomial, it should work forany arbitrary polynomial,
So for example, this is how I call the function in the command window,
>>IsStable([1.0000 1.2000 0.8562 0.3360 0.0321 0.0539])
The input vector can be any arbitrary vector basically. Thank you for the replies.
Torsten
Torsten le 19 Mar 2019
And what do you expect polynomial(1:i,1:i) to be for this polynomial ? As defined, your polynomial is a vector, not a matrix.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Polynomials dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by