experiments/laser_and_mirrors_aux2.py

changeset 12
a0d61ac3719e
parent 10
0c9e19020217
--- 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,
+    )

mercurial