X-Git-Url: http://gitweb.michael.orlitzky.com/?p=octave.git;a=blobdiff_plain;f=optimization%2Fpreconditioned_conjugate_gradient_method.m;h=e2f841aefea06ec92e8bb1e8dbe85eb5f2b65747;hp=cd886084a9766e1d785df59185c358ae69d75cc7;hb=92116b34e755b3ef5de14a1777676bc09180f007;hpb=4c5f15b69f6795a22c662a9e22ddd649c65872cb diff --git a/optimization/preconditioned_conjugate_gradient_method.m b/optimization/preconditioned_conjugate_gradient_method.m index cd88608..e2f841a 100644 --- a/optimization/preconditioned_conjugate_gradient_method.m +++ b/optimization/preconditioned_conjugate_gradient_method.m @@ -66,7 +66,8 @@ function [x, k] = preconditioned_conjugate_gradient_method(Q, ... % % We use this in the inner loop. - sqrt_n = floor(sqrt(length(x0))); + n = length(x0); + sqrt_n = floor(sqrt(n)); % Set k=0 first, that way the references to xk,rk,zk,dk which % immediately follow correspond (semantically) to x0,r0,z0,d0. @@ -90,8 +91,8 @@ function [x, k] = preconditioned_conjugate_gradient_method(Q, ... % So if it's too close to zero, we replace it with something % comparable but non-zero. - if (abs(dkQdk) < eps) - dkQdk = sign(dkQdk)*eps; + if (dkQdk < eps) + dkQdk = eps; end alpha_k = rkzk/dkQdk;