|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
用共轭梯度法求最小值,其中在梯度方向上用0.618法一维搜索最优步长
但是程序运行中,a,b的值一直未变,a=7.6,b=0.65.
不知道怎么回事?哪位能给我个提示?谢谢!
%goldensection
A1=-3.0;B1=12.1;A2=4.1;B2=5.8;x=[1 4.5];y=[1 2];
a1=(A1-x(1))/y(1);a2=(B1-x(2))/y(1);a=max(a1,a2);
b1=(A2-x(1))/y(2);b2=(B2-x(2))/y(2);b=min(b1,b2);
epsilon=1e-3;
a1=b-0.618*(b-a);f1=feval(@myfun,x+a1*y);
a2=a+0.618*(b-a);f2=feval(@myfun,x+a2*y);
while b-a>epsilon
if f1>f2
a=a1;a1=a2;f1=f2;a2=a+0.618*(b-a);f2=feval(@myfun,x+a2*y);
else
b=a2;a2=a1;f2=f1;a1=b-0.618*(b-a);f1=feval(@myfun,x+a1*y);
end
end
z=(b+a)/2;
另外 function z=myfun(v)
x=v(1);y=v(2);
z=21.5+x*sin(4*pi*x)+y*sin(20*pi*y);
程序很简单,可我自己没看出来,可能是算法的问题吧
[ 本帖最后由 sun1993 于 2007-11-27 19:15 编辑 ] |
|