diff options
-rw-r--r-- | log-fourier_integrator.cpp | 21 |
1 files changed, 1 insertions, 20 deletions
diff --git a/log-fourier_integrator.cpp b/log-fourier_integrator.cpp index a061e1f..0e05366 100644 --- a/log-fourier_integrator.cpp +++ b/log-fourier_integrator.cpp @@ -133,26 +133,17 @@ int main(int argc, char* argv[]) { Real ΔCmin = 1000; Real ΔCₜ = 100; unsigned stepsUp = 0; - Real cost; - Real oldCost = 1000; while (ΔCₜ > ε) { auto [RddfCt, dfCt] = RddfCtdfCt(fft, Cₜ, Rₜ, p, s, λ); std::vector<Complex> Ĉₜ₊₁(N); std::vector<Complex> Ȓₜ₊₁(N); - cost = 0; for (unsigned n = 0; n < N; n++) { - cost += std::norm((μₜ + II * fft.ν(n)) * Ȓₜ[n] - ((Real)1.0 + std::pow(β, 2) * RddfCt[n] * Ȓₜ[n])); - cost += std::norm((μₜ + II * fft.ν(n)) * Ĉₜ[n] - ((2 * Γ₀ * std::conj(Ȓₜ[n]) / (1 + std::pow(τ₀ * fft.ν(n), 2)) + std::pow(β, 2) * (RddfCt[n] * Ĉₜ[n] + dfCt[n] * std::conj(Ȓₜ[n]))))); Ȓₜ₊₁[n] = ((Real)1.0 + std::pow(β, 2) * RddfCt[n] * Ȓₜ[n]) / (μₜ + II * fft.ν(n)); Ĉₜ₊₁[n] = ((2 * Γ₀ * std::conj(Ȓₜ[n]) / (1 + std::pow(τ₀ * fft.ν(n), 2)) + std::pow(β, 2) * (RddfCt[n] * Ĉₜ[n] + dfCt[n] * std::conj(Ȓₜ[n]))) / (μₜ + II * fft.ν(n))).real(); } - cost = sqrt(cost); - cost /= 2*N; - std::vector<Real> Rₜ₊₁ = fft.inverse(Ȓₜ₊₁); std::vector<Real> Cₜ₊₁ = fft.inverse(Ĉₜ₊₁); - cost += std::abs(Cₜ₊₁[0] - 1); Real C₀ = Cₜ₊₁[0]; @@ -211,15 +202,6 @@ int main(int argc, char* argv[]) { } ΔCₜ = sqrt(ΔCₜ) / (2*N); - if (cost < oldCost) { - γ = std::min(1.01 * γ, γ₀); - } else { - γ = std::max(γ / 2, (Real)1e-2);; - } - - oldCost = cost; - - /* if (ΔCₜ < 0.9 * ΔCmin) { ΔCmin = ΔCₜ; stepsUp = 0; @@ -232,7 +214,6 @@ int main(int argc, char* argv[]) { stepsUp = 0; ΔCmin = ΔCₜ; } - */ for (unsigned i = 0; i < N; i++) { Cₜ[i] += γ * (Cₜ₊₁[i] - Cₜ[i]); @@ -242,7 +223,7 @@ int main(int argc, char* argv[]) { } std::cerr << "\x1b[2K" << "\r"; - std::cerr << β << " " << μₜ << " " << ΔCₜ << " " << γ << " " << C₀ << " " << cost; + std::cerr << β << " " << μₜ << " " << ΔCₜ << " " << γ << " " << C₀; } if (std::isnan(Cₜ[0])) { |