|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
function y=ya_100_100(x)
format long
eps=input('please input your accuracy:');
a=-5;
b=5;
x0=a+(b-a)*rand(1,100);
A=diag([1:1:100]);
m=1;
iterstep(1,:)=x;
while mod(m,2)~=0&&norm((x-x0)*A)>eps
grad=(x-x0)*A;
alpha=grad*grad'/(grad*A*grad');
x=x-alpha*grad;
iterstep(m+1,:)=x;
m=m+1;
end
while mod(m,2)==0&&norm((x-x0)*A)>eps
x1=iterstep(m-1,:);
x2=iterstep(m,:);
grad1=(x1-x0)*A;
grad2=(x2-x0)*A;
alpha1=grad1*grad1'/(grad1*A*grad1');
alpha2=grad2*grad2'/(grad2*A*grad2');
alpha=2/(sqrt((1/alpha1-1/alpha2)^2+4*norm(grad2)^2/norm(x2-x1)^2)+1/alpha1+1/alpha2);
x2=x2-alpha*grad2;
x=x2;
iterstep(m+1,:)=x;
m=m+1;
end
step=max(size(iterstep))-1
我想求出它的迭代步数来
但是出来的结果总是不对
循环体好像进行不下去
我也不知道哪里错了
先谢谢各位了! |
|