diff --git a/scripts/run_experiments.jl b/scripts/run_experiments.jl index 19d2dea853e235f93f2c74168f1337364e20a754..deb47718908bfafbdc4c453db4b7f878e0300fd9 100644 --- a/scripts/run_experiments.jl +++ b/scripts/run_experiments.jl @@ -365,7 +365,9 @@ function solve_primal!(u::FeFunction, ctx::L1L2TVContext) -dot(p1, ctx.T(tdata, phi)) - dot(p2, nablaphi) + ctx.alpha2 * dot(g, ctx.T(tdata, phi)) - # u = B^{-1} * (T^* p_1 - div p_2 - alpha2 * T^* g) + # u = -B^{-1} * (T^* p_1 + nabla^* p_2 - alpha2 * T^* g) + # solve: + # <B u, phi> = -<p_1, T phi> - <p_2, nablaphi> + alpha_2 * <g, T phi> A, b = assemble(u.space, u_a, u_l; ctx.g, ctx.p1, ctx.p2, ctx.tdata) u.data .= A \ b end @@ -373,16 +375,7 @@ end huber(x, gamma) = abs(x) < gamma ? x^2 / (2 * gamma) : abs(x) - gamma / 2 function estimate!(ctx::L1L2TVContext) - # FIXME: sign? function estf(x_; g, u, p1, p2, nablau, w, nablaw, tdata) - #alpha1part = iszero(ctx.alpha1) ? 0. : ctx.alpha1 * ( - # huber(norm(ctx.T(tdata, u) - g), ctx.gamma1) - - # dot(ctx.T(tdata, u) - g, p1 / ctx.alpha1) + - # ctx.gamma1 / 2 * norm(p1 / ctx.alpha1)^2) - #lambdapart = iszero(ctx.lambda) ? 0. : ctx.lambda * ( - # huber(norm(nablau), ctx.gamma2) - - # dot(nablau, p2 / ctx.lambda) + - # ctx.gamma2 / 2 * norm(p2 / ctx.lambda)^2) alpha1part = ctx.alpha1 * huber(norm(ctx.T(tdata, u) - g), ctx.gamma1) - dot(ctx.T(tdata, u) - g, p1) +