Skip to content

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.