X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Fcone%2Fdoubly_nonnegative.py;h=e8cacda5cd492100096eff2cf557c8992a34d9b3;hb=a339e89c225bb46379332ecb8b0c50b918d34ac6;hp=a30a827d158f3b99d7d9df5d295096e7cc349e0f;hpb=e0fe78330d18566d75a74bd4e58d415e3a9d5889;p=sage.d.git diff --git a/mjo/cone/doubly_nonnegative.py b/mjo/cone/doubly_nonnegative.py index a30a827..e8cacda 100644 --- a/mjo/cone/doubly_nonnegative.py +++ b/mjo/cone/doubly_nonnegative.py @@ -1,4 +1,4 @@ -""" +r""" The doubly-nonnegative cone in `S^{n}` is the set of all such matrices that both, @@ -16,7 +16,7 @@ from sage.all import * from mjo.cone.symmetric_psd import (factor_psd, is_symmetric_psd, random_symmetric_psd) -from mjo.matrix_vector import isomorphism +from mjo.basis_repr import basis_repr def is_doubly_nonnegative(A): @@ -68,7 +68,7 @@ def is_doubly_nonnegative(A): def is_admissible_extreme_rank(r, n): - """ + r""" The extreme matrices of the doubly-nonnegative cone have some restrictions on their ranks. This function checks to see whether the rank ``r`` would be an admissible rank for an ``n``-by-``n`` matrix. @@ -371,8 +371,8 @@ def is_extreme_doubly_nonnegative(A): # whenever we come across an index pair `$(i,j)$` with # `$A_{ij} = 0$`. spanning_set = [] - for j in xrange(A.ncols()): - for i in xrange(j): + for j in range(A.ncols()): + for i in range(j): if A[i,j] == 0: M = A.matrix_space() S = X.transpose() * (stdE(M,i,j) + stdE(M,j,i)) * X @@ -383,7 +383,7 @@ def is_extreme_doubly_nonnegative(A): # can't compute the dimension of a set of matrices anyway, so we # convert them all to vectors and just ask for the dimension of the # resulting vector space. - (phi, phi_inverse) = isomorphism(A.matrix_space()) + (phi, phi_inverse) = basis_repr(A.matrix_space()) vectors = map(phi,spanning_set) V = span(vectors, A.base_ring()) @@ -530,7 +530,7 @@ def random_extreme_doubly_nonnegative(V, accept_zero=True, rank=None): """ - if not is_admissible_extreme_rank(rank, V.dimension()): + if rank is not None and not is_admissible_extreme_rank(rank, V.dimension()): msg = 'Rank %d not possible in dimension %d.' raise ValueError(msg % (rank, V.dimension()))