38 lines
852 B
Julia
38 lines
852 B
Julia
|
using LinearAlgebra
|
||
|
using AbstractAlgebra
|
||
|
|
||
|
function printgood(msg)
|
||
|
printstyled("✓", color = :green)
|
||
|
println(" ", msg)
|
||
|
end
|
||
|
|
||
|
function printbad(msg)
|
||
|
printstyled("✗", color = :red)
|
||
|
println(" ", msg)
|
||
|
end
|
||
|
|
||
|
F, gens = rational_function_field(AbstractAlgebra.Rationals{BigInt}(), ["x", "t₁", "t₂", "t₃"])
|
||
|
x = gens[1]
|
||
|
t = gens[2:4]
|
||
|
|
||
|
# three mutually tangent spheres which are all perpendicular to the x, y plane
|
||
|
M = matrix_space(F, 7, 7)
|
||
|
gram = M(F[
|
||
|
1 -1 -1 -1 -1 t[1] t[2];
|
||
|
-1 1 -1 -1 -1 x t[3]
|
||
|
-1 -1 1 -1 -1 -1 -1;
|
||
|
-1 -1 -1 1 -1 -1 -1;
|
||
|
-1 -1 -1 -1 1 -1 -1;
|
||
|
t[1] x -1 -1 -1 1 -1;
|
||
|
t[2] t[3] -1 -1 -1 -1 1
|
||
|
])
|
||
|
|
||
|
r, p, L, U = lu(gram)
|
||
|
if isone(p)
|
||
|
printgood("Found a solution")
|
||
|
else
|
||
|
printbad("Didn't find a solution")
|
||
|
end
|
||
|
solution = transpose(L)
|
||
|
mform = U * inv(solution)
|