#matlab
#matlab
Вопрос:
lambda0 = 9.6;
gamma0 = 0.0016;
Pload = 900;
nj=1;
AvW = 32e6;
t = 12;
%thermal plant%%%
ath = 0.002;
bth = 8;
gamth = 1200;
cth = 0;
Pth0 = (lambda0 - (nj*bth))/((2*nj*ath)-(2*cth*lambda0));
%%%%%hydro plant%%%%%
ah = 6000;
bh = 100000;
ch = 100;
Ph0 = (lambda0 - (nj*ah*gamma0))/(2*lambda0*ch);
Tl = 0.0000045;
%%%%%%%%%%%lambda%%%%%%%%%%%%%%%%%%%%%%
j=1;
for j=1:24
x = Pload - Ph0 - Pth0;
e1 = 0.1;
while x > e1
lambda = lambda0 0.25;
Pth = (lambda - (nj*bth))/((2*nj*ath)-(2*cth*lambda));
Ph = (lambda - (nj*ah*gamma0))/(2*lambda*ch);
Ploss = 0.0000045 * Ph^2;
x = Pload Ploss - Ph - Pth;
if x < e1
lambda = lambda0;
Pth = (lambda - (nj*bth))/((2*nj*ath)-(2*cth*lambda));
Ph = (lambda - (nj*ah*gamma0))/(2*lambda*ch);
Ploss = 0.0000045 * Ph^2;
end
W = bth ath*Ph;
fprintf('W=%.3f',W);
x = Pload Ploss - Ph - Pth;
e2 = 50 ;
dW = W - AvW;
end
end
while dW > e2
lambda = (nj *(gamma0*ah)-(2*ath*bth))/((2*cth*Pth)-(2*Tl*Ph));
x = Pload-Ph-Pth;
while x(1)> e1
lambda = lambda 0.25;
gamma = gamma0 0.00001;
Pth = (lambda - (nj*bth))/((2*nj*ath)-(2*cth*lambda));
Ph = (lambda - (nj*ah*gam))/(2*lambda*ch);
Ploss = 0.0000045 * Ph^2;
x = Pload Ploss - Ph - Pth;
if x(1)< e1
lambda = lambda0;
Pth = (lambda - (nj*bth))/((2*nj*ath)-(2*cth*lambda));
Ph = (lambda - (nj*ah*gamma))/(2*lambda*ch);
Ploss = 0.0000045 * Ph^2;
x = Pload Ploss - Ph - Pth;
W = bth ath*Ph;
fprintf('w=%.3f',W);
end
end
tot = W * t ;
if e2 > tot
fprintf('t%.3f',lambda);
fprintf('t%.3f',Pth);
fprintf('t%.3f',Ph);
fprintf('t%.3f',gamma);
fprintf('n');
end
end
Комментарии:
1. Объяснение того, какую ошибку вы получаете, помогло бы.
Ответ №1:
Ваш цикл говорит for j=1:1
. Разве это не должно быть for j=1:24
?
Комментарии:
1. @user694666, тогда, пожалуйста, попытайтесь сузить круг ваших проблем. В вашей программе переменные с непонятными именами и без комментариев — если вы исправите эти проблемы, вы, вероятно, обнаружите ошибку самостоятельно.
Ответ №2:
Ваша проблема в том, что ваш цикл while является бесконечным циклом. Первые 5 строк в первом цикле while являются константами, следовательно, x
значение, равное 437,5, всегда больше e1
, поэтому ваш цикл никогда не завершается. Кроме того, я не вижу, чтобы индекс цикла где-либо использовался, так что, по сути, не имеет значения, выполняете вы цикл или нет.
Я предполагаю, что вы запутались со слишком большим количеством неописательных переменных. Я поддерживаю предложение Карла о том, чтобы вы попытались навести некоторый порядок в именовании и потоке вашего кода, и тогда вы сами увидите, как это исправить (подсказка: я уже сказал вам, где искать).