]> gitweb.michael.orlitzky.com - sage.d.git/blobdiff - mjo/cone/symmetric_psd.py
cone/faces.py: test a lattice join property of face_generated_by().
[sage.d.git] / mjo / cone / symmetric_psd.py
index bb46fc926ec8dc23588ef08ea49a974060a02841..ef5d477ce67aa4f40a3466c48904888ddfaa840b 100644 (file)
@@ -6,15 +6,6 @@ all symmetric positive-semidefinite matrices (as a subset of
 
 from sage.all import *
 
-# Sage doesn't load ~/.sage/init.sage during testing (sage -t), so we
-# have to explicitly mangle our sitedir here so that "mjo.symbolic"
-# resolves.
-from os.path import abspath
-from site import addsitedir
-addsitedir(abspath('../../'))
-from mjo.symbolic import matrix_simplify_full
-
-
 def is_symmetric_psd(A):
     """
     Determine whether or not the matrix ``A`` is symmetric
@@ -29,6 +20,10 @@ def is_symmetric_psd(A):
     Either ``True`` if ``A`` is symmetric positive-semidefinite, or
     ``False`` otherwise.
 
+    SETUP::
+
+        sage: from mjo.cone.symmetric_psd import is_symmetric_psd
+
     EXAMPLES:
 
     Every completely positive matrix is symmetric
@@ -81,6 +76,10 @@ def unit_eigenvectors(A):
     A list of (eigenvalue, eigenvector) pairs where each eigenvector is
     associated with its paired eigenvalue of ``A`` and has norm `1`.
 
+    SETUP::
+
+        sage: from mjo.cone.symmetric_psd import unit_eigenvectors
+
     EXAMPLES::
 
         sage: A = matrix(QQ, [[0, 2, 3], [2, 0, 0], [3, 0, 0]])
@@ -146,6 +145,10 @@ def factor_psd(A):
     `$D$` will have dimension `$k \times k$`. In the end everything
     works out the same.
 
+    SETUP::
+
+        sage: from mjo.cone.symmetric_psd import factor_psd
+
     EXAMPLES:
 
     Create a symmetric positive-semidefinite matrix over the symbolic
@@ -153,7 +156,7 @@ def factor_psd(A):
 
         sage: A = matrix(SR, [[0, 2, 3], [2, 0, 0], [3, 0, 0]])
         sage: X = factor_psd(A)
-        sage: A2 = matrix_simplify_full(X*X.transpose())
+        sage: A2 = (X*X.transpose()).simplify_full()
         sage: A == A2
         True
 
@@ -242,6 +245,10 @@ def random_psd(V, accept_zero=True, rank=None):
     ``accept_zero`` is ``False``, we restart the process from the
     beginning.
 
+    SETUP::
+
+        sage: from mjo.cone.symmetric_psd import is_symmetric_psd, random_psd
+
     EXAMPLES:
 
     Well, it doesn't crash at least::
@@ -301,9 +308,8 @@ def random_psd(V, accept_zero=True, rank=None):
         # Use the one the user gave us.
         rank_A = rank
 
-    # Begin with the zero matrix, and add projectors to it if we have
-    # any.
-    A = V.zero_element().column()*V.zero_element().row()
+    # Begin with the zero matrix, and add projectors to it if we have any.
+    A = V.zero().column()*V.zero().row()
 
     # Careful, begin at idx=1 so that we only generate a projector
     # when rank_A is greater than zero.