%   Script WOK.M
%
%   Wurzelortskurven
%
% J. Lunze
% 6.3.1996
% für 2. Auflage: 21.2.1999
% für 3. Auflage: 26.3.2001
% für 4. Auflage: 19.9.2003
% für 5. Auflage: 18.4.2005
% für 6. Auflage: 4.12.2006
% für 7. Auflage: 13.5.2008
% für 8. Auflage: 29.12.2009
% für 9. Auflage: 16.2.2012
% für 10. Auflage: 27.1.2014
% für 12. Auflage: 5.08.2019
%
%   
clear
close all
z = [0.25, 1];
%n = [0.005, 0.055, 0.2, 0.25, 0];
n=[0.00375, 0.0475, 0.1875, 0.25, 0];
Beispiel1=tf(z, n);

%%  Wurzelortskurve für Beispiel 1
%   
figure(1);
Beispiel1
rlocprintblue(Beispiel1);
latextitle('Wurzelortskurve für Beispiel 1');
latexxlabel('Re');
latexylabel('Im');
rotateY;
axis([-10 2 -6 6]);
xticks([-10 -5 0]);
yticks([-5 0 5]);
axis('square');
[r, k]=rlocus(Beispiel1, [0.5]);
plot(real(r(1)), imag(r(1)), 'bs');
plot(real(r(2)), imag(r(2)), 'bs');
plot(real(r(3)), imag(r(3)), 'bs');
plot(real(r(4)), imag(r(4)), 'bs');
[r, k]=rlocus(Beispiel1, [2]);
plot(real(r(1)), imag(r(1)), 'b*');
plot(real(r(2)), imag(r(2)), 'b*');
plot(real(r(3)), imag(r(3)), 'b*');
plot(real(r(4)), imag(r(4)), 'b*');



%%   Wurzelortskurve für Aufgabe 10.3
%   
figure(2);
z=1;
n=[1 4 3 0];
Beispiel2=tf(z, n)
subplot(3,3,[1, 2, 4, 5]);
rlocprintblue(Beispiel2);
latextitle('Wurzelortskurve f\"ur ein P-geregeltes System');
latexxlabel('Re');
latexylabel('Im');
rotateY;
axis([-6, 2, -4, 4]);
xticks([-4 0]);
yticks([-4 0 4]);
axis('square');


%%  Regler mit Nullstelle bei -1 und Pol bei -4
%   
figure(3);
subplot(3,3,[1, 2, 4, 5]);
z=1;
n=[1 7 12 0];
Beispiel3=tf(z,n)
rlocprintblue(Beispiel3);
latextitle('Wurzelortskurve mit Regler $$K(s) = (s+1)/(s+4)$$');
latexxlabel('Re');
latexylabel('Im');
rotateY;
[r, k]=rlocus(z, n, [15]);
plot(real(r(1)), imag(r(1)), 'bs');
plot(real(r(2)), imag(r(2)), 'bs');
plot(real(r(3)), imag(r(3)), 'bs');
axis('square');
axis([-8 2 -5 5]);
xticks([-8 -4 0]);
yticks([-4 0 4]);


%%  Übergangsfunktion des Regelkreises bei k=15
%   
figure(4);
subplot(2,1,1);
z=15;
Beispiel4=tf(z, n)
Einheitsrueckf=tf(1, 1);
Kreis=feedback(Beispiel4, Einheitsrueckf);
[Y, T]=step(Kreis);
plot(T, Y, 'b', [0 6],[1 1],'k:');
latextitle('F\"uhrungs\"ubergangsfunktion des Regelkreises');
latexxlabel('$$t$$');
latexylabel('$$h_{\rm w}$$');
rotateY;
axis([0 6 0 1.2]);
yticks([0 1]);
xticks([0 2 4 6]);



%%   Wurzelortskurve für allpasshaltiges System und PI-Regler
%   
figure(5);
subplot(4,4,[1 2 5 6]);
zs=[1 -1];
ns=[1 2];
Strecke=tf(zs, ns);
kP=1;
kI=1;
zr=[kP kI];
nr=[1 0];
Regler=tf(zr, nr);
OffeneKette=series(Strecke, Regler)
rlocprintblue(OffeneKette);
%latextitle('Strecke $$(s-1)/(s+2)$$ mit PI-Regler $$k(s+1)/s$$');
latexxlabel('Re');
xticks([-2 0]);
latexylabel('Im');
rotateY;
axis([-2.8 1.6 -2.2 2.2]);
xticks([-2 0]);
yticks([-2 0 2]);
axis('square');
hold off;


%%  Vorzeichen des Reglers verändert, da statische Verstärkung
%   der Regelstrecke negativ
%   
subplot(4,4,[3 4 7 8]);
kP=-1;
kI=-1;
zr=[kP kI];
nr=[1 0];
Regler2=tf(zr, nr);
OffeneKette2=series(Strecke, Regler2)
rlocprintblue(OffeneKette2);
hold on;
latexxlabel('Re');
xticks([-2 0]);
ylabel('');
axis([-2.8 1.6 -2.2 2.2]);
xticks([-2 0]);
yticks([-2 0 2]);
axis('square');
[r, k]=rlocus(OffeneKette2, [0.20]);
hold on
plot(real(r(1)), imag(r(1)), 'bs');
plot(real(r(2)), imag(r(2)), 'bs');
hold off;


%%   WOK für nichtminimalphasiges System
%   
figure(6)
z=[-2 1];
n=[2 1 0];
Beispiel5=tf(z, n)
subplot(4,4,[1 2 5 6]);
rlocprintblue(Beispiel5);
latexxlabel('Re');
latexylabel('Im');
rotateY;
axis([-1 1 -1 1]);
xticks([-1 0 1]);
yticks([-1 0 1]);
hold on;
plot([-3 3],[0 0],'k:');
plot([0 0],[-3 3],'k:');
hold off;
axis('square');
latextitle('WOK f\"ur allpasshaltiges System');
%
subplot(4,4,[3 4 7 8]);
Beispiel6=tf(-z, n);
rlocprintblue(Beispiel6);
latexxlabel('Re');
ylabel('');
axis([-1 1 -1 1]);
xticks([-1 0 1]);
yleer;
axis('square');
hold on;
plot([-3 3],[0 0],'k:');
plot([0 0],[-3 3],'k:');
hold off;
 


%%  Berechnung der kritischen Verstärkung für Beispiel 1
%   
figure(7);
%   Umformung der Übergangsfunktion in die Standardform
z = [0.25, 1];                          % Beispiel 1
n=[0.00375, 0.0475, 0.1875, 0.25, 0];   % Beispiel 1
zneu=z/0.25;
nneu=n/0.00375;
Beispiel1neu=tf(zneu, nneu);
Beispiel1neu
rlocprintblue(Beispiel1neu);
latextitle('Wurzelortskurve f\"ur Beispiel 1');
latexxlabel('Re');
latexylabel('Im');
rotateY;
axis([-10 2 -6 6]);
xticks([-10 -5 0]);
yticks([-5 0 5]);
axis('square');
[r, k]=rlocus(Beispiel1neu, [139]);
plot(real(r(1)), imag(r(1)), 'b*');
plot(real(r(2)), imag(r(2)), 'b*');
plot(real(r(3)), imag(r(3)), 'b*');
plot(real(r(4)), imag(r(4)), 'b*');
latextext(-0.4, 0.6, '$$s_1$$')
latextext(-3, 1.6, '$$s_2$$')
latextext(-3, -1.6, '$$s_3$$')
latextext(-6.7, 0.6, '$$s_4$$')
latextext(-4, 0.6, '$$s_{01}$$');

%%     Bilder auf .EPS- und .PS-Dateien
%
Epsbildc15('wok');
