From e6cf08a9b3535bbb2c2b364f669e76534a123dce Mon Sep 17 00:00:00 2001 From: Aaron Fenyes Date: Mon, 15 Jul 2024 23:54:59 -0700 Subject: [PATCH] Make tetrahedron faces planar --- .../gram-test/sphere-in-tetrahedron.jl | 46 +++++++++++++------ 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/engine-proto/gram-test/sphere-in-tetrahedron.jl b/engine-proto/gram-test/sphere-in-tetrahedron.jl index 273d3ad..1d02d45 100644 --- a/engine-proto/gram-test/sphere-in-tetrahedron.jl +++ b/engine-proto/gram-test/sphere-in-tetrahedron.jl @@ -8,16 +8,32 @@ using Random J = Int64[] K = Int64[] values = BigFloat[] -for j in 1:5 - for k in 1:5 - push!(J, j) - push!(K, k) - if j == k +for j in 1:6 + for k in 1:6 + filled = false + if j == 6 + if k <= 4 + push!(values, 0) + filled = true + end + elseif k == 6 + if j <= 4 + push!(values, 0) + filled = true + end + elseif j == k push!(values, 1) + filled = true elseif (j <= 4 && k <= 4) push!(values, -1/BigFloat(3)) + filled = true else push!(values, -1) + filled = true + end + if filled + push!(J, j) + push!(K, k) end end end @@ -25,19 +41,23 @@ gram = sparse(J, K, values) # set initial guess Random.seed!(99230) -guess = sqrt(1/BigFloat(3)) * BigFloat[ - 1 1 -1 -1 0 - 1 -1 1 -1 0 - 1 -1 -1 1 0 - 1 1 1 1 -2 - 1 1 1 1 1 -] + 0.2*Engine.rand_on_shell(fill(BigFloat(-1), 5)) +guess = hcat( + sqrt(1/BigFloat(3)) * BigFloat[ + 1 1 -1 -1 0 + 1 -1 1 -1 0 + 1 -1 -1 1 0 + 1 1 1 1 -2 + 1 1 1 1 1 + ] + 0.2*Engine.rand_on_shell(fill(BigFloat(-1), 5)), + BigFloat[0, 0, 0, 1, 1] +) +frozen = [CartesianIndex(j, 6) for j in 1:5] # complete the gram matrix #= L, history = Engine.realize_gram_newton(gram, guess) =# -L, success, history = Engine.realize_gram(gram, guess) +L, success, history = Engine.realize_gram(gram, guess, frozen) completed_gram = L'*Engine.Q*L println("Completed Gram matrix:\n") display(completed_gram)