function q=bran_aug(p,a,b,c,d,erg,BRF,RFV,TAZ,iS)
%BRAN_AUG Hilfsfile fuer bran_au.m - Struktur im z-Bereich
%         q=bran_aug(p,a,b,c,d,erg,BRF,RFV,TAZ,iS)
% **** ACHTUNG: Aufruf nur durch bran_au - entspricht automatisiertem bran_1;
% ****          Optimierungsgleichungen fuer fsolve entsprechend Beispiel nach
% ****          Brandenburg mit 3 Zustandsrueckfuehrungen

% SCHLUESSELWORTE: Hilfsfile

%  Copyright (c) 1998 Dr. Gert-Helge Geitner; TU Dresden, Fak. ET,
%                     Elektrotechnisches Institut (ETI); Mommsenstr. 13;
%                     D-01062 Dresden, Germany;
%                     Tel./Fax (0351)-463-2917/7280
%                     e-mail: geitner@eti.et.tu-dresden.de

BME=[1 1 7; 7 1 0; 0 7 0]; BMA=[2 1 3; 4 2 0; 0 3 0]; % Spalten !!!
			   % Moegliche Eingaenge: 1;      7
			   % Moegliche Ausgaenge: 2 (,1); 4 (,3)
% Definition der Bloecke fuer Reglerkoeffizienten
  q=zeros(TAZ,1); % Vorbereitung der q(ii)-Berechnung fuer fsolve
knr=length(erg);  % Anzahl schon vorhandener Ergebnisse
KZV=erg;	  % Koeffizienten-Zaehler-Vektor, zusammengefasst
KZV(3)=0;	  % "Rest" der Koeffizienten zunaechst mit Nullen auffuellen
for i=1:TAZ
    knr=knr+1; KZV(knr)=p(i); % fsolve-Zwischenergebnisse einspeichern
end
n002=KZV(RFV(1)); d002=1;     % Kdelta
n003=KZV(RFV(2)); d003=1;     % Km
n004=KZV(RFV(3)); d004=1;     % Kn
% Da blkbuild nicht anwendbar ist, kann auf nblocks verzichtet werden
% Unverbundenes Diagonalsystem erzeugen
	   s0n=abs('n000'); s0d=abs('d000');
for t=2:4  HUS=fix(t/100); ZEV=fix(t/10); sk=[0 HUS ZEV-HUS*10 t-ZEV*10];
           s1=char(s0n+sk); s2=char(s0d+sk);
           [at,bt,ct,dt]=tf2ss(eval(s1),eval(s2));
           [a,b,c,d]=append(a,b,c,d,at,bt,ct,dt);
end;       %  !!!Algorithmus so fuer drei ASCII-Stellen (0...9)!!!
qq=[1 -5 -6  7
    2 -5 -6  7
    3 -5 -6  7
    4 -5 -6  7
    5  1  0  0
    6  2  0  0
    7 -3  0  0];
 [ac,bc,cc,dc]=connect(a,b,c,d,qq,BME(iS,BRF),BMA(iS,BRF));
 [acm,bcm,ccm,dcm]=minreal1(ac,bc,cc,dc);  %Unbedingt notwendig !!!
 [a,b]=ss2tf(acm,bcm,ccm,dcm);
%Ueberpruefung der Berechenbarkeit
  oz=length(a); on=length(b);   % Ordnung von Zaehler und Nenner
  o=max(oz,on);			% Absicherung gegen Nennerpolynomnaeherungen
  if oz>on b(oz)=0; elseif on>oz a(on)=0; end
  Z=TAZ;			% Zeilenanzahl fuer K-Matrix
  S=o-1;			% Spaltenanzahl fuer K-Matrix
  if TAZ>=o disp('Warnung: Ordnung<Anzahl Unbekannte!')
     a(TAZ+1)=0; b(TAZ+1)=0; o=TAZ+1;
  end
%Berechnung der K-Matrix: Spalten=S; Zeilen=Z
for i=1:Z
 for j=1:S
  if     i==1         K(i,j)=j^2;
  else   if j==1      K(i,j)=0;
	 elseif  j==2 K(i,j)=K(i,j-1)+K(i-1,j-1);
	 elseif  j==3 K(i,j)=K(i,j-1)+K(i,j-2)+K(i-1,j-1)+K(i-1,j-2);
	 else         K(i,j)=K(i,j-1)+K(i,j-2)-K(i,j-3)+K(i-1,j-1)+K(i-1,j-2);
end; end; end; end
for ii=1:TAZ
    for i=ii:(o-1), x=0;
        for j=1:(o-i)
            x = x + a(j) * a(j+i) - b(j) * b(j+i);  end
        q(ii) = q(ii) + x * K(ii,i);  end; end