--- a/experiments/laser_and_mirrors_aux2.py Mon Jun 29 00:20:42 2026 +0300 +++ b/experiments/laser_and_mirrors_aux2.py Sun Oct 04 13:02:26 2026 -0500 @@ -4,7 +4,7 @@ # import laser_and_mirrors_aux import numpy as np -from laser_and_mirrors_aux import generic_setup, relnoise +from laser_and_mirrors_aux import generic_setup, reg_params from measures import DiscreteMeasure_2_f64 from pointsource_pde import Problem, RegTerm from pointsource_pde.convection_diffusion import BoxedQuadraticRegularisation @@ -17,41 +17,66 @@ # Setup the problem -def setup(prefix): - rng = np.random.default_rng(seed=31337) +def setup( + prefix, + alpha=reg_params["alpha"], + alpha_k=reg_params["alpha_k"], + alpha_c=reg_params["alpha_c"], + c_noise=reg_params["c_noise"], + k_noise=reg_params["k_noise"], + noise=reg_params["noise"], + seed=reg_params["seed"], + sim_oversample=reg_params["sim_oversample"], + sim_oversample_time=reg_params["sim_oversample_time"], + true_init=False, + true_target=False, + scale_cstep=reg_params["scale_cstep"], +): + rng = np.random.default_rng(seed=seed) - dat, auxtrue, _μ_bound, μ_true, plot_factory, pde = generic_setup( + dat, auxtrue, aux0, _μ_bound, μ_true, plot_factory, pde = generic_setup( prefix, rng=rng, μ_true=DiscreteMeasure_2_f64([([0.2, 0.3], 0.15), ([0.4, 0.1], 0.04)]), k=0.02, r=0.1, θ=120 * np.pi / 180, + c_noise=c_noise, + k_noise=k_noise, + noise=noise, + sim_oversample=sim_oversample, + sim_oversample_time=sim_oversample_time, + scale_cstep=scale_cstep, ) # Override Lipschitz parameter - pde.override_lipschitz = (4.0,) - pde.override_lipschitz_pair = (4.0, 4.0) + dat.override_lipschitz = 1.0 + dat.override_lipschitz_pair = (0.0, 0.0) # print("diff_chain_lipschitz_factor (modified)", pde.diff_chain_lipschitz_factor()) # l1, l2 = pde.diff_chain_lipschitz_factor_pair() # print("diff_chain_lipschitz_factor_pair (modified) ", l1, ", ", l2) - reg = RegTerm.NonnegRadon(1.5e-6) + reg = RegTerm.NonnegRadon(alpha) μ0 = DiscreteMeasure_2_f64([]) - (k, (c1, c2)) = auxtrue - aux0 = ( - max(0.001, relnoise(k, 0.02, rng)), - ( - relnoise(c1, 0.2, rng), - relnoise(c2, 0.2, rng), - ), + + print("aux init ", aux0) + aux = BoxedQuadraticRegularisation( + (0.001, -1.0), + (1.0, 1.0), + (alpha_k, alpha_c), + auxtrue if true_target else aux0, + (1, scale_cstep) if scale_cstep is not None else None, ) - print("aux init ", aux0) - aux = BoxedQuadraticRegularisation((0.001, -1.0), (1.0, 1.0), (3.0, 0.0005), aux0) - ax = aux.apply(aux0) - inival = dat.apply((μ0, aux0)) - print("Initial data term value:", inival + ax) - print("Data term value at true μ:", dat.apply((μ_true, auxtrue)) + ax) + print("Initial value:", dat.apply((μ0, aux0)) + aux.apply(aux0)) + print("Value at true μ:", dat.apply((μ_true, auxtrue)) + aux.apply(auxtrue)) - return Problem(dat, reg, aux, aux0, μ0, plot_factory=plot_factory) + return Problem( + dat, + reg, + aux, + auxtrue if true_init else aux0, + μ0, + plot_factory=plot_factory, + domain=pde.domain_dims, + )