diff --git a/Dipolar-Gas-Simulator/+Simulator/@DipolarGas/runGradientDescent.m b/Dipolar-Gas-Simulator/+Simulator/@DipolarGas/runGradientDescent.m index 6bc8bca..c0b7110 100644 --- a/Dipolar-Gas-Simulator/+Simulator/@DipolarGas/runGradientDescent.m +++ b/Dipolar-Gas-Simulator/+Simulator/@DipolarGas/runGradientDescent.m @@ -147,7 +147,7 @@ function [psi] = runGradientDescent(this,psi,Params,Transf,VDk,V,Observ) theta = compute_optimal_theta(p, muchem, psi, Params, Transf, VDk, V); % Update solution - gamma = 1 / sqrt(sum(abs(p(:)).^2)); + gamma = 1 / sqrt(sum(abs(p(:)).^2) * Transf.dx * Transf.dy * Transf.dz); psi = (cos(theta).*psi) + (gamma*sin(theta).*p); % Normalize psi Norm = sum(abs(psi(:)).^2) * Transf.dx * Transf.dy * Transf.dz; @@ -261,8 +261,8 @@ function theta = compute_optimal_theta(p, muchem, psi, Params, Transf, VDk, V) Hpsi = compute_gradient(psi, Params, Transf, VDk, V); Hp = compute_gradient(p, Params, Transf, VDk, V); g = compute_g(psi, p, Params, VDk); - gamma = 1 / sqrt(sum(abs(p(:)).^2)); - numerator = real(p(:)' * Hpsi(:) * Transf.dx * Transf.dy * Transf.dz)/gamma; + gamma = 1 / sqrt(sum(abs(p(:)).^2) * Transf.dx * Transf.dy * Transf.dz); + numerator = gamma * real(p(:)' * Hpsi(:) * Transf.dx * Transf.dy * Transf.dz); denominator = muchem - (gamma^2 * (real(p(:)' * Hp(:) * Transf.dx * Transf.dy * Transf.dz) + real(g(:)' * p(:) * Transf.dx * Transf.dy * Transf.dz))); theta = numerator / denominator;