回 帖 发 新 帖 刷新版面

主题:求助帮我改下错误的程序,急!谢谢

function predpreystoch(length, OldX, OldY, r1, b1, r2, b2) 
X(1) = OldX;
Y(1) = OldY; T(1) = 0;
i = 1;
while (i < length)
B1 = r1 * X(i);
B2 = b2 * X(i) * Y(i);
D1= b1 * X(i) * Y(i);
D2= r2 * Y(i);
R = B1 + B2 + D1 + D2;
if (R == 0)
i = length; 
break;
end;
y = rand;
S(i) = - log (y) / R;
y = rand;
if y <= (B1 / R)
X(i+1) = X(i) + 1;
Y(i+1) = Y(i);
elseif y <= ((B1 + D1) / R)
X(i+1) = X(i) - 1;
Y(i+1) = Y(i);
elseif y <= ((B1 + D1 + B2) / R)
Y(i+1) = Y(i) + 1;
X(i+1) = X(i); 
else
Y(i+1) = Y(i) - 1;
X(i+1) = X(i); end;
T(i+1) = T(i) + S(i); i++;
end;
plot (0);
ylabel("Population Size"); 
xlabel("Time");
legend("off");
hold on;
plot( T , X, ’b;;’);
plot( T, Y, ’r;;’); 
hold off;
错误的信息是
??? Strings passed to EVAL cannot contain function declarations.

回复列表 (共2个回复)

沙发

length=10
OldX=rand(1,length)
OldY=rand(1,length)
r1=1
b1=2
r2=3
b2=4
%
X = OldX;
Y = OldY; 
T= zeros(1,length);
i = 1;
while (i < length)
B1 = r1 * X(i);
B2 = b2 * X(i) * Y(i);
D1= b1 * X(i) * Y(i);
D2= r2 * Y(i);
R = B1 + B2 + D1 + D2;
  if (R == 0)
  i = length; 
  break;
  end;
y = rand;
S(i) = - log (y) / R;
y = rand;
  if y <= (B1 / R)
  X(i+1) = X(i) + 1;
  Y(i+1) = Y(i);
  elseif y <= ((B1 + D1) / R)
  X(i+1) = X(i) - 1;
  Y(i+1) = Y(i);
  elseif y <= ((B1 + D1 + B2) / R)
  Y(i+1) = Y(i) + 1;
  X(i+1) = X(i); 
  else
  Y(i+1) = Y(i) - 1;
  X(i+1) = X(i); 
  end;
T(i+1) = T(i) + S(i);
i=i+1;
end;
plot (0);
ylabel('Population Size'); 
xlabel('Time');
legend('off');
hold on;
plot( T,X, 'b-');
plot( T,Y, 'r.'); 
hold off;

以上参考
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
错误的信息是
??? Strings passed to EVAL cannot contain function declarations
函数只可以调用,不可以直接运行

板凳

感觉函数被你改了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册