Matlab 什么';It’代码有误,请帮帮我。我想显示从j=1到j=24的结果 lambda0=9.6; gamma0=0.0016; Pload=900; nj=1; AvW=32e6; t=12; %热电厂%% ath=0.002; bth=8; gamth=1200; cth=0; Pth0=(λ0-(nj*bth))/(2*nj*ath)-(2*cth*lambda0)); %%%%%水力发电厂%% ah=6000; bh=100000; ch=100; Ph0=(λ0-(nj*ah*gamma0))/(2*lambda0*ch); Tl=0.0000045; %%%%%%%%%%%lambda%%%%%%%%% j=1; 对于j=1:24 x=Pload-Ph0-Pth0; e1=0.1; 当x>e1时 λ=λ0+0.25; Pth=(λ-(nj*bth))/(2*nj*ath)-(2*cth*lambda)); Ph=(λ-(nj*ah*gamma0))/(2*lambda*ch); Ploss=0.0000045*Ph^2; x=Pload+Ploss-Ph-Pth; 如果xe2 λ=(nj*(gamma0*ah)-(2*ath*bth))/(2*cth*Pth)-(2*Tl*Ph)); x=Pload Ph Pth; 而x(1)>e1 λ=λ+0.25; gamma=gamma0+0.00001; Pth=(λ-(nj*bth))/(2*nj*ath)-(2*cth*lambda)); Ph=(λ-(nj*ah*gam))/(2*lambda*ch); Ploss=0.0000045*Ph^2; x=Pload+Ploss-Ph-Pth; 如果x(1)tot fprintf('\t%.3f',λ); fprintf('\t%.3f',Pth); fprintf('\t%.3f',Ph); fprintf('\t%.3f',gamma); fprintf('\n'); 结束 结束

Matlab 什么';It’代码有误,请帮帮我。我想显示从j=1到j=24的结果 lambda0=9.6; gamma0=0.0016; Pload=900; nj=1; AvW=32e6; t=12; %热电厂%% ath=0.002; bth=8; gamth=1200; cth=0; Pth0=(λ0-(nj*bth))/(2*nj*ath)-(2*cth*lambda0)); %%%%%水力发电厂%% ah=6000; bh=100000; ch=100; Ph0=(λ0-(nj*ah*gamma0))/(2*lambda0*ch); Tl=0.0000045; %%%%%%%%%%%lambda%%%%%%%%% j=1; 对于j=1:24 x=Pload-Ph0-Pth0; e1=0.1; 当x>e1时 λ=λ0+0.25; Pth=(λ-(nj*bth))/(2*nj*ath)-(2*cth*lambda)); Ph=(λ-(nj*ah*gamma0))/(2*lambda*ch); Ploss=0.0000045*Ph^2; x=Pload+Ploss-Ph-Pth; 如果xe2 λ=(nj*(gamma0*ah)-(2*ath*bth))/(2*cth*Pth)-(2*Tl*Ph)); x=Pload Ph Pth; 而x(1)>e1 λ=λ+0.25; gamma=gamma0+0.00001; Pth=(λ-(nj*bth))/(2*nj*ath)-(2*cth*lambda)); Ph=(λ-(nj*ah*gam))/(2*lambda*ch); Ploss=0.0000045*Ph^2; x=Pload+Ploss-Ph-Pth; 如果x(1)tot fprintf('\t%.3f',λ); fprintf('\t%.3f',Pth); fprintf('\t%.3f',Ph); fprintf('\t%.3f',gamma); fprintf('\n'); 结束 结束,matlab,Matlab,您的循环显示j=1:1的。这不是j=1:24的吗?你的问题是while循环是一个无限循环。第一个while循环中的前5行是常量,因此x(结果为437.5)总是大于e1,因此循环永远不会终止。而且,我看不到循环索引在任何地方都被使用,所以本质上,循环与否没有什么区别 我猜你把自己和太多非描述性变量搞混了。我赞同Carl的建议,即您尝试在命名和代码流中引入一些顺序,然后您将自己看看如何解决它(提示:我已经告诉您应该在哪里查找)。@user694666,那么请尝试缩小您的问题范围。您的程序具有名称混乱

您的循环显示j=1:1的
。这不是j=1:24的
吗?

你的问题是while循环是一个无限循环。第一个while循环中的前5行是常量,因此
x
(结果为437.5)总是大于
e1
,因此循环永远不会终止。而且,我看不到循环索引在任何地方都被使用,所以本质上,循环与否没有什么区别


我猜你把自己和太多非描述性变量搞混了。我赞同Carl的建议,即您尝试在命名和代码流中引入一些顺序,然后您将自己看看如何解决它(提示:我已经告诉您应该在哪里查找)。

@user694666,那么请尝试缩小您的问题范围。您的程序具有名称混乱的变量,并且没有注释-如果您纠正了这些问题,您可能会自己发现错误。对您遇到的错误进行解释会有所帮助。
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