Azzera filtri
Azzera filtri

How should be change ROOT LOCUS asymmetric?

5 visualizzazioni (ultimi 30 giorni)
Task is find stabil interval. (root locus)
Code:
num=[1 0 0 0]
den=[1 0 5 10 1.5]
Hs=tf(num,den)
rlocus(Hs)
Result:
num =
1 0 0 0
den =
Columns 1 through 3
1.0000 0 5.0000
Columns 4 through 5
10.0000 1.5000
Transfer function:
s^3
------------------------
s^4 + 5 s^2 + 10 s + 1.5
Plot is asymmetric: http://i.imgur.com/v8dQD.png
Who can me help to solve symetrical plot?
  1 Commento
Azzi Abdelmalek
Azzi Abdelmalek il 26 Nov 2012
Modificato: Azzi Abdelmalek il 26 Nov 2012
xy, you've added a comment, then don't use answer (use comment).
What do you want exactly to do? Your question and your comment are not coherents

Accedi per commentare.

Risposta accettata

Azzi Abdelmalek
Azzi Abdelmalek il 25 Nov 2012
k=-1000:0.1:1000;
rlocus(Hs,k)

Più risposte (2)

Jonathan Epperl
Jonathan Epperl il 25 Nov 2012
That's interesting, that harmless looking transfer function really seems to be problematic for Matlab.
You have already noted that the root locus your are getting is certainly wrong -- it is not symmetric wrt the real axis, and also the real axis left of the pole at -1.3 has to lie on the root locus entirely.
Two solutions I can offer:
  • As Azzi has suggested, supply a vector of gain values with higher resolution, I suggest
rlocus(Hs, linspace(0,40,5e3));
  • Instead of drawing the root locus and eyeballing it, do some math to find the imaginary-axis crossings. The Routh-Array and Hurwitz Criteria are favorites here.

x y
x y il 26 Nov 2012
Thi is not same ,but in this task is good,is symethric:
s^3
------------------------
s^4 + 5 s^2 + 10 s + 0.5
s^4 + K s^3 + 5 s^2 + 10 s + 0,5 = 0
omega^4 - K j omega^3 - 5 omega^2 + 10 j omega + 0,5 = 0
omega ^4 - 5 omega^2 + 0,5 = 0
- K j omega^3 + 10 j omega = 0 => k = 10 / omega^2
>> omega=roots([1 0 -5 0 0.5]);
>> k=10./omega.^2
k =
2.041684766872804e+000
2.041684766872800e+000
9.795831523312707e+001
9.795831523312721e+001
>> r1=rlocus(g,k(1))
r1 =
8.049116928532385e-016 +2.213123530591180e+000i
8.049116928532385e-016 -2.213123530591180e+000i
-1.990396370317212e+000
-5.128839655559203e-002
>> r2=rlocus(g,k(3))
r2 =
-9.790828968598125e+001
2.359223927328458e-016 +3.195062414783789e-001i
2.359223927328458e-016 -3.195062414783789e-001i
-5.002554714585826e-002
but i dont know how to get this:
s^4 + K s^3 + 5 s^2 + 10 s + 0,5 = 0
* omega^4 - K j omega^3 - 5 omega^2 + 10 j omega + 0,5 = 0*
* omega ^4 - 5 omega^2 + 0,5 = 0
- K j omega^3 + 10 j omega = 0 => k = 10 / omega^2 *

Community Treasure Hunt

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

Start Hunting!

Translated by