我这段程序怎么运行不起来啊,请各位大牛帮忙看看啊,谢谢了!

来源:百度知道 编辑:UC知道 时间:2024/06/02 20:47:04
我的程序如下:
%目标函数
fun=inline('(x(2)^2*x(3)^2-1/(x(2)^2-x(1)))/(6*x(3)*(x(2)-1))','x')
% 上下界
lbound=[0.2 2.5 0.087];ubound=[0.8 5.5 0.577];
d=(ubound-lbound);
x0=(lbound+ubound)/2;x1=x0;
y0=fun(x0);y1=y0;
T=10000;
L=50;

while(T>0.1)
for i=1:L
x=x1+d.*(rand(1,2)-0.5);
y=fun(x);
delta=y-y1;
if delta<0
y1=y;
x1=x;

if y0>y1

y0=y1;
x0=x1;
end
else
if delta>0 & rand<exp(-delta/T)
y1=y;

fun=inline('(x(2)^2*x(3)^2-1/(x(2)^2-x(1)))/(6*x(3)*(x(2)-1))','x')
% 上下界
lbound=[0.2 2.5 0.087];ubound=[0.8 5.5 0.577];
d=(ubound-lbound);
x0=(lbound+ubound)/2;x1=x0;
y0=fun(x0);y1=y0;
T=10000;
L=50;

while(T>0.1)
for i=1:L
x=x1+d.*(rand(1,3)-0.5);
y=fun(x);
delta=y-y1;
if delta<0
y1=y;
x1=x;

if y0>y1

y0=y1;
x0=x1;
end
else
if delta>0 & rand<exp(-delta/T)
y1=y;
x1=x;
end
end
end
T=T*0.95;
d=d*0.95;

end
y0
x0

fun =

Inline function:
fun(x) = (x(2)^2*x(3)^2-1/(x(2)^2-x(1)))/(6*x(3)*(x(2)-1))

y0 =

-1.387008728001738e+002

x0 =

-4.776522980622727 0.999620198712131 0.603445461381267

呵呵,程序只是一点儿小错误,给你改过了了,这是我给你执行的结果!

while循环的第三句中的rand(1,3)才对,你写成