function [V,H,x,flg] = LongCG(A,b,tol,x) n = length(b); V = zeros(n,n); H = zeros(n,n); flg = 0; if (nargin <4) x = zeros(n,1); end res = b - A * x; TOL = norm(A)*1e-12; resnorm = zeros(n,1); fucval = zeros(n,1); for t = 1:n V(:,t) = res; for s = 1:t-1 Av = A*V(:,s); H(t,s) = sum(V(:,t).*Av)/sum(V(:,s).*Av); V(:,t) = V(:,t)-H(t,s)*V(:,s); end alpha = sum(res.*V(:,t))/sum(V(:,t).*(A*V(:,t))); x = x + alpha * V(:,t); res = b - A * x; resnorm(t) = norm(res); funcval(t) = sum(x.*(A*x))-2*sum(b.*x); if (norm(res)<=tol) V = V(:,1:t); H = H(1:t,1:t); H(abs(H)