📄 minreshgf.m
字号:
function [x,k,rn,tol]=Minreshgf(A,b)
k=0;
[N,M] = size(A);
x = zeros(N,1);
r0=b-A*x;
r0r0=norm(r0);
aa=norm(A,1);
q0=0;
beta=r0r0;
q1=r0/beta;
tol1(1)=1;
while tol1(k+1)>1e-16
aq=A*q1;
r=aq-beta*q0;
alpha=q1'*r;
r=r-alpha*q1;
k=k+1;
beta1=norm(r);
if k == 1
T = [alpha];
T1=[T;beta1];
Q = [q1];
elseif k == 2
T = [T,beta;beta,alpha];
T1=[T;0,beta1];
Q = [Q,q1];
else
T2 = [zeros(k-2,1);beta];
T = [T,T2;T2',alpha];
T1=[T;zeros(1,k-1),beta1];
Q = [Q,q1];
end;
[Q1,R] = qr(T1);
rr = r0r0*[1;zeros(k,1)];
gk1=Q1'*rr;
gk=gk1(1:k);
R = R(1:k,:);
yk = R\gk;
x = Q*yk;
if r~=0;
beta=beta1;
q0=q1;
q1=r/beta;
end
rn(k)=abs(gk1(k+1));
tol1(k+1)=rn(k)/(aa*norm(x)+norm(b));
end
[n,m]=size(tol1);
tol=tol1(2:m);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -