马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
分别用共轭梯度法和拟牛顿法极小化奇异函数f(x)=x1+10*x2)^2+5*(x3-x4)^2+10*(x1-x4)^4,x0=(3,-1,0,1)',
我用FR-CG法编的,但是迭代到第二步,就解不搜索因子了。麻烦高手帮忙看哈嘛
clc
clear
syms x1 x2 x3 x4
x=[x1,x2,x3,x4];
f=(x1+10*x2)^2+5*(x3-x4)^2+10*(x1-x4)^4;
g=[diff(f,x1),diff(f,x2),diff(f,x3),diff(f,x4)];
err=0.01;
a1=3;a2=-1;a3=0;a4=1;
A=[0 0 0 0];
k=0;
for i=1:10
f0=subs(subs(subs(subs(f,x1,a1),x2,a2),x3,a3),x4,a4);
g0=simple([subs(g(:,1),x,A),subs(g(:,2),x,A),subs(g(:,3),x,A),subs(g(:,4),x,A)])
d=-g0
s=eval(sqrt(g0(:,1)^2+g0(:,2)^2+g0(:,3)^2+g0(:,4)^2))
if err>s
A
break
else
syms t
A1=A+t*d;
f1=subs(f,x,A1);
df1=simple(diff(f1,t))
t1=eval(simple(solve(df1,t)))
t1=t1(1,:)
A1=[subs(A1(:,1),t,t1),subs(A1(:,2),t,t1),subs(A1(:,3),t,t1),subs(A1(:,4),t,t1)]
g1=[subs(g(:,1),x,A1),subs(g(:,2),x,A1),subs(g(:,3),x,A1),subs(g(:,4),x,A1)]
b=(g1*g1')/(g0*g0')
d1=-g1+b*d;
d=d1
A=A1
k=k+1
end
end
[ 本帖最后由 eight 于 2007-12-10 15:52 编辑 ] |