Two dimensions¶
Twindex certifies twins for the 2-D problem on the unit square
−Δu + q(x, y; θ) f(u) = g in (0, 1)², u = 0 on the boundary,
with a tensor Bernstein coefficient q(x, y; θ) = Σ θ_jk B_j(x) B_k(y)
(θ ≥ 0), an odd-power nonlinearity f(u) = Σ a_m u^m (a_m ≥ 0) and a
polynomial source g. The proof is THEORY §7.1, Theorem 9.
from fractions import Fraction as F
from twindex.elliptic2d import Model2, Problem2, check_pair2
from twindex.solver2 import candidate2
model = Model2() # degree (1, 1) coefficient: 4 parameters; f = u^3; g = 16 x(1-x) y(1-y)
sensors = ((F(1, 4), F(1, 4)), (F(3, 4), F(1, 4)), (F(1, 2), F(1, 2)),
(F(1, 4), F(3, 4)), (F(3, 4), F(3, 4)))
p = candidate2([200, 200, 200, 200], model, n=16) # exact, zero on the boundary
data = tuple(p(x, y) for x, y in sensors)
problem = Problem2(sensors, data, F(1, 100), ((0, 1000),) * 4, 0, model)
q = candidate2([260, 200, 200, 200], model, n=16)
report = check_pair2(problem, ([200] * 4, p), ([260, 200, 200, 200], q), 60)
print(report.verdict) # Verdict.VALID: the first coefficient cannot be pinned to within ±30
The resulting certificate, examples/study/2d/twins_2d_pair.json, replays with
twindex check like any other.
Corner compatibility¶
A polynomial that vanishes on the boundary of the square has Δp = 0 at the four
corners, so its residual there is −g(corner). If g does not vanish at the
corners, every polynomial candidate has a residual at least |g(corner)|, and the
true solution itself is not smooth at the corners. Certificates are then
INCONCLUSIVE. Use sources that vanish at the corners. The default
g = 16 x(1−x) y(1−y) vanishes on the whole boundary.
Scope¶
- Unit square, homogeneous Dirichlet data, tensor Bernstein coefficients up to degree 10 in each variable.
- Witness and pair certificates. Pavings in 2-D are future work.