clc;
Pr= input('Ingrese la potencia requerida en Kw = 40000');
lambda(1) = input('Ingrese el valor de lambda en ctvs$ = 8.0 ');
bandera = 0;
flag=0;
%Valores de Potencias Mínimas y Máximas de las unidades Base
pbmax(1) = 9900;
pbmin(1) = 3600;
pbmax(2) = 9900;
pbmin(2) = 3600;
pbmax(3) = 9900;
pbmin(3) = 3600;
pbmax(4) = 9900;
pbmin(4) = 3600;
pbmax(5) = 9900;
pbmin(5) = 3600;
pbmax(6) = 9900;
pbmin(6) = 3600;
Potbmax = 0;
Potbmin = 0;
for i=1:6
Potbmax = Potbmax + pbmax(i);
Potbmin = Potbmin + pbmin(i);
end
if Pr<=Potbmin
bandera = 1;
end
if Pr>Potbmin && Pr<=Potbmax
ecuaciones = [-1.803474E-12 6.807022E-08 -8.42656E-04 1.146129E+01;...
-1.6233693E-12 6.2586799E-08 -7.9518109E-04 1.1249170E+01;...
-1.6233693E-12 6.2586799E-08 -7.9518109E-04 1.1249170E+01;...
-1.7043272E-12 6.5084006E-08 -8.1695508E-04 1.1359717E+01;...
-1.4268208E-12 5.8170640E-09 -7.7182460E-04 1.1291629E+01;...
-1.7309252E-12 6.6377504E-08 -8.3832297E-04 1.1450687E+01];
%1ra iteración
total = 0;
resultado(1,1) = 1;
resultado(1,2) = lambda(1);
resultado(1,3) = 0;
[s, t] = size(ecuaciones);
for i=1:s
for j=1:t
ecuacion(j) = ecuaciones(i,j);
end
resultado(1,i+3) = raices(ecuacion, lambda(1), pbmax(i), pbmin(i));
total = total + resultado(1,i+3);
end
resultado(1,3) = total;
error(1) = total - Pr;
%2da iteración
if total>Pr
lambda(2) = 1.1*lambda(1);
else
lambda(2) = 0.9*lambda(1);
end
total = 0;
resultado(2,1) = 2;
resultado(2,2) = lambda(2);
resultado(2,3) = 0;
for i=1:s
for j=1:t
ecuacion(j) = ecuaciones(i,j);
end
resultado(2,i+3) = raices(ecuacion,lambda(2),pbmax(2),pbmax(i),pbmin(i));
total = total + resultado(2,i+3);
end
resultado(2,3) = total;
error(2) = total - Pr;
%siguientes iteraciones
e = 3;
total = 0;
while abs(error(e-1))>0.5 && flag==0
resultado(e,1) = e;
bandera = 2;
if error(e-1)==error(e-2)
if abs(lambda(e-1))==lambda(e-1)
if resultado(e-1,3)>Pr
lambda(e) = 1.1*lambda(e-1);
end
if resultado(e-1,3)<Pr
lambda(e) = 0.9*lambda(e-1);
end
else
lambda(e) = -1*lambda(e-1);
end
else
lambda(e) = lambda(e-1)-((error(e-1)*(lambda(e-1)-lambda(e-2)))/(error(e-1)-error(e-2)));
end
resultado(e,2) = lambda(e);
resultado(e,3) = 0;
for i=1:s
for j=1:t
ecuacion(j) = ecuaciones(i,j);
end
resultado(e,i+3) = raices(ecuacion,lambda(e),pbmax(i),pbmin(i));
total = total + resultado(e,i+3);
end
resultado(e,3) = total;
error(e) = total - Pr;
e = e + 1;
total = 0;
if e==100
flag=1;
bandera = 5;
end
end
end
%Valores de Potencias Mínimas y Máximas de las demás unidades
pmax(1) = 14000;
pmin(1) = 4800;
pmax(2) = 14700;
pmin(2) = 4800;
pmax(3) = 14000;
pmin(4) = 4800;
pmax(4) = 14700;
pmin(4) = 4800;
pmax(5) = 13200;
pmin(5) = 4800;
pmax(6) = 13200;
pmin(6) = 4800;
Potmax = Potbmax;
Potmin = Potbmax;
for i=1:6
Potmax = Potmax + pmax(i);
Potmin = Potmin + pmin(i);
end
if Pr>Potmin && Pr<=Potmax
ecuaciones = [ 0 0 -6.5255493223E-05 1.2341596482E+01;...
0 0 -8.0701007582E-05 1.3082714475E+01;...
0 0 -3.2271886295E-05 1.1852832530E+01;...
0 0 -7.4756331929E-05 1.2900770633E+01;...
-9.1933325980E-13 4.8142248228E-08 -8.2070689424E-04 1.5230343489E+01;...
-8.687304E-13 4.543759E-08 -7.767900E-04 1.494327E+01];
%1ra iteración
total = 0;
resultado(1,1) = 1;
resultado(1,2) = lambda(1);
resultado(1,3) = 0;
[s t] = size(ecuaciones);
for i=1:s
for j=1:t
ecuacion(j) = ecuaciones(i,j);
end
resultado(1,i+3) = pbmax(i);
resultado(1,i+9) = raices(ecuacion,lambda(1),pmax(i),pmin(i));
total = total + resultado(1,i+9);
end
total = total + Potbmax;
resultado(1,3) = total;
error(1) = total - Pr;
%2da iteración
if total>Pr
lambda(2) = 1.1*lambda(1);
else
lambda(2) = 0.9*lambda(1);
end
total = 0;
resultado(2,1) = 2;
resultado(2,2) = lambda(2);
resultado(2,3) = 0;
for i=1:s
for j=1:t
ecuacion(j) = ecuaciones(i,j);
end
resultado(2,i+3) = pbmax(i);
resultado(2,i+9) = raices(ecuacion,lambda(2),pmax(i),pmin(i));
total = total + resultado(2,i+9);
end
total = total + Potbmax;
resultado(2,3) = total;
error(2) = total - Pr;
%siguientes iteraciones
e = 3;
total = 0;
while abs(error(e-1))>0.5 && flag==0
bandera = 3;
resultado(e,1)=error(e-2);
if error(e-1)==error(e-2)
if abs(lambda(e-1))==lambda(e-1)
if resultado(e-1,3)>Pr
lambda(e) = 1.1*lambda(e-1);
end
if resultado(e-1,3)<Pr
lambda(e) = 0.9*lambda(e-1);
end
else
lambda(e) = -1*lambda(e-1);
end
else
lambda(e) = lambda(e-1)-((error(e-1)*(lambda(e-1)-lambda(e-2)))/(error(e-1)-error(e-2)));
end
resultado(e,2) = lambda(e);
resultado(e,3) = 0;
for i=1:s
for j=1;t
ecuacion(j) = ecuaciones(i,j);
end
resultado(e,i+3) = pbmax(i);
resultado(e,i+9) = raices(ecuacion,lambda(e),pmax(i),pmin(i));
total = total + resultado(e,i+9);
end
total = total + Potbmax;
resultado(e,3) = total;
error(e) = total - Pr;
e = e + 1;
total = 0;
if e==100
flag=1;
bandera = 6;
end
end
end
if Pr>Potmax
bandera = 4;
end
%Presentación de resultados
if bandera==1
fprinf('\n');
fprintf(' La potencia Mínima que se puede generar es de %.2f kW\n\n',Potbmin);
end
if bandera==2
[m n] = size(resultado);
for i=1:m
for j=1:n
tabla(j,i)= resultado(i,j);
end
end
fprintf('\n');
fprintf(' Tabla de Resultado\n\n');
fprintf('Iteración Lambda Potencia B4-Booster-1 B4-Booster-2 B4-Booster-3 B5-Booster-1 B5-Booster-2 B5-Booster-3\n');
fprintf(' Requerida (kW) (kW) (kW) (kW) (kW) (kW)n');
fprintf(' (kW)\n\n');
fprintf('%5.0f %10.4f %10.2f %11.2f %12.2f %12.2f %12.2f %12.2f %12.2f\n',tabla);
fprintf('\n');
plot(lambda, error,'w');
hold on
grid on;
xlabel('Lambda');
ylabel('error');
comet(lambda(1), error(1));
for i=1:length(lambda)-1
a=linspace(lambda(i),lambda(i+1),500);
b=linspace(error(i),error(i+1),500);
comet(a,b);
end
end
if bandera==3
[m n] = size(resultado);
for i=1:m
for j=1:n
tabla(j,i)= resultado(i,j);
end
end
fprintf('\n');
fprintf(' Tabla de Resultado\n\n');
fprintf('Iteración Lambda Potencia B4-Booster-1 B4-Booster-2 B4-Booster-3 B5-Booster-1 B5-Booster-2 B5-Booster-3 B1-Booster-1\n');
fprintf(' Requerida (kW) (kW) (kW) (kW) (kW) (kW) (kW)n');
fprintf(' (kW)\n\n');
fprintf('%5.0f %10.4f %10.2f %11.2f %12.2f %12.2f %12.2f %12.2f %12.2f %12.2f %12.2f %12.2f %12.2f %12.2f %12.2f\n',tabla);
fprintf('\n');
plot(lambda, error,'w');
hold on
grid on;
xlabel('Lambda');
ylabel('error');
comet(lambda(1), error(1));
for i=1:length(lambda)-1
a=linspace(lambda(i),lambda(i+1),500);
b=linspace(error(i),error(i+1),500);
comet(a,b);
end
end
if bandera==4
fprintf('\n');
fprintf(' La Potencia Máxima que se puede generar es de %.2f kW\n\n',Potmax);
end
if bandera==5
[m n] = size(resultado);
for i=1:m
for j=1:n
tabla(j,i)= resultado(i,j);
end
end
fprintf('\n');
fprintf(' Tabla de Resultado\n\n');
fprintf('Iteración Lambda Potencia B4-Booster-1 B4-Booster-2 B4-Booster-3 B5-Booster-1 B5-Booster-2 B5-Booster-3\n');
fprintf(' Requerida (kW) (kW) (kW) (kW) (kW) (kW)n');
fprintf(' (kW)\n\n');
fprintf('%5.0f %10.4f %10.2f %11.2f %12.2f %12.2f %12.2f %12.2f %12.2f\n',tabla);
fprintf('\n\n');
fprintf(' Los datos no convergen... intente con otros valores\n\n');
end
if bandera==6
[m n] = size(resultado);
for i=1:m
for j=1:n
tabla(j,i)= resultado(i,j);
end
end
fprintf('\n');
fprintf(' Tabla de Resultado\n\n');
fprintf('Iteración Lambda Potencia B4-Booster-1 B4-Booster-2 B4-Booster-3 B5-Booster-1 B5-Booster-2 B5-Booster-3 B1-Booster-1\n');
fprintf(' Requerida (kW) (kW) (kW) (kW) (kW) (kW) (kW)n');
fprintf(' (kW)\n\n');
fprintf('%5.0f %10.4f %10.2f %11.2f %12.2f %12.2f %12.2f %12.2f %12.2f %12.2f %12.2f %12.2f %12.2f %12.2f %12.2f\n',tabla);
fprintf('\n\n');
fprintf(' Los datos no convergen... Itente con otros valores\n\n');
end