From 44802773ad9e5151890ed37e7bb2463ff9fc4135 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Fri, 5 Jun 2015 23:40:29 -0400 Subject: [PATCH] Use built-in Gram-Schmidt to make things a little better. --- mjo/cone/cone.py | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/mjo/cone/cone.py b/mjo/cone/cone.py index 6fb15ae..f2e8b2e 100644 --- a/mjo/cone/cone.py +++ b/mjo/cone/cone.py @@ -8,26 +8,6 @@ addsitedir(abspath('../../')) from sage.all import * -def drop_dependent(vs): - r""" - Return the largest linearly-independent subset of ``vs``. - """ - if len(vs) == 0: - # ...for lazy enough definitions of linearly-independent - return vs - - result = [] - old_V = VectorSpace(vs[0].parent().base_field(), 0) - - for v in vs: - new_V = span(result + [v]) - if new_V.dimension() > old_V.dimension(): - result.append(v) - old_V = new_V - - return result - - def iso_space(K): r""" Construct the space `W \times W^{\perp}` isomorphic to the ambient space @@ -36,7 +16,10 @@ def iso_space(K): V = K.lattice().vector_space() # Create the space W \times W^{\perp} isomorphic to V. - W_basis = drop_dependent(K.rays()) + # First we get an orthogonal (but not normal) basis... + M = matrix(V.base_field(), K.rays()) + W_basis,_ = M.gram_schmidt() + W = V.subspace_with_basis(W_basis) W_perp = W.complement() -- 2.44.2