]> gitweb.michael.orlitzky.com - dunshire.git/commitdiff
Fix SymmetricPSD documentation and add the column-major vec() function.
authorMichael Orlitzky <michael@orlitzky.com>
Thu, 6 Oct 2016 22:02:54 +0000 (18:02 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Thu, 6 Oct 2016 22:02:54 +0000 (18:02 -0400)
src/dunshire/cones.py
src/dunshire/matrices.py

index b1e07e9d6c607c823334aecb74ea774cb073bf35..2609b16eea729651c7d005c226d5f47ab4cd616c 100644 (file)
@@ -316,13 +316,24 @@ class IceCream(SymmetricCone):
 
 class SymmetricPSD(SymmetricCone):
     """
-    The nonnegative orthant in ``n`` dimensions.
+    The cone of real symmetric positive-semidefinite matrices.
+
+    This cone has a dimension ``n`` associated with it, but we let ``n``
+    refer to the dimension of the domain of our matrices and not the
+    dimension of the (much larger) space in which the matrices
+    themselves live. In other words, our ``n`` is the ``n`` that appears
+    in the usual notation `S^{n}` for symmetric matrices.
+
+    As a result, the cone ``SymmetricPSD(n)`` lives in a space of dimension
+    ``(n**2 + n)/2)``.
 
     EXAMPLES:
 
         >>> K = SymmetricPSD(3)
         >>> print(K)
         Cone of symmetric positive-semidefinite matrices on the real 3-space
+        >>> K.dimension()
+        3
 
     """
     def __str__(self):
index 0d97c0cbc4e83dfc95231a2306b870fb7b93a5db..1e0f2a5b7970fd19b78a2d136dc0a98dee2547af 100644 (file)
@@ -101,3 +101,26 @@ def norm(matrix_or_vector):
 
     """
     return sqrt(sum([x**2 for x in matrix_or_vector]))
+
+
+def vec(real_matrix):
+    """
+    Create a long vector in column-major order from ``real_matrix``.
+
+    EXAMPLES:
+
+       >>> A = matrix([[1,2],[3,4]])
+       >>> print(A)
+       [ 1  3]
+       [ 2  4]
+       <BLANKLINE>
+
+       >>> print(vec(A))
+       [ 1]
+       [ 2]
+       [ 3]
+       [ 4]
+       <BLANKLINE>
+
+    """
+    return matrix(real_matrix, (len(real_matrix), 1))