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.

 Akzeptierte Antwort

Torsten
Torsten am 19 Mär. 2019

1 Stimme

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 Kommentare

Mughees Asif
Mughees Asif am 19 Mär. 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 am 19 Mär. 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 am 19 Mär. 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 am 19 Mär. 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Gefragt:

am 19 Mär. 2019

Kommentiert:

am 19 Mär. 2019

Community Treasure Hunt

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

Start Hunting!

Translated by