sagemath / sage

Main repository of SageMath
https://www.sagemath.org
Other
1.45k stars 481 forks source link

SemidefiniteProgram front-end improvements #30060

Open mkoeppe opened 4 years ago

mkoeppe commented 4 years ago

In what Sage considers to be the primal SDP, we have the constraint

\sum x_j A_j  \succeq C

where the left hand side is considered as an element of the tensor product of the n x n matrix space with the space of linear functionals, implemented in LinearTensorParent. In de Klerk-Vallentin, this linear operator is denoted by A*.

To express its adjoint, the linear operator A, we will need the space of linear functionals on the n x n matrix space. Then A will be an element of the tensor product of R^m with with that space of linear functionals, for which we again can use LinearTensorParent.

Depends on #30095 Depends on #30172

CC: @dimpase @yuan-zhou

Component: numerical

Branch/Commit: u/mkoeppe/semidefiniteprogram_front_end_improvements @ e25be28

Issue created by migration from https://trac.sagemath.org/ticket/30060

mkoeppe commented 4 years ago

Description changed:

--- 
+++ 
@@ -1 +1,10 @@
+In what Sage considers to be the primal SDP, 
+we have the constraint

+    \sum x_j A_j  \succeq C
+
+where the left hand side is considered as an element of the tensor product of the n x n matrix space with the space of linear functionals, implemented in `LinearTensorParent`. In de Klerk-Vallentin, this linear operator is denoted by A*.
+
+To express its adjoint, the linear operator A, we will need the space of linear functionals on the n x n matrix space.  Then A will be an element of the tensor product of R^m with with that space of linear functionals, for which we again can use `LinearTensorParent`.
+
+
mkoeppe commented 4 years ago

Description changed:

--- 
+++ 
@@ -5,6 +5,6 @@

 where the left hand side is considered as an element of the tensor product of the n x n matrix space with the space of linear functionals, implemented in `LinearTensorParent`. In de Klerk-Vallentin, this linear operator is denoted by A*.

-To express its adjoint, the linear operator A, we will need the space of linear functionals on the n x n matrix space.  Then A will be an element of the tensor product of R^m with with that space of linear functionals, for which we again can use `LinearTensorParent`.
+To express its adjoint, the linear operator A, we will need the space of linear functionals on the n x n matrix space.  Then A will be an element of the tensor product of `R^m` with with that space of linear functionals, for which we again can use `LinearTensorParent`.
mkoeppe commented 4 years ago

Branch: u/mkoeppe/semidefiniteprogram_front_end_improvements

mkoeppe commented 4 years ago
comment:4

Probably we should be using https://doc.sagemath.org/html/en/reference/modules/sage/modules/free_quadratic_module.html


New commits:

e25be28SemidefiniteProgram.dual_operator: Add stub
mkoeppe commented 4 years ago

Commit: e25be28

mkoeppe commented 4 years ago
comment:5

Best to switch to the (multi)linear algebra that comes from sage-manifolds.

            sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
            sage: e = M.basis('e')
            sage: a = M.linear_form('A') ; a
            Linear form A on the Rank-3 free module M over the Integer Ring
            sage: a[:] = [2,-1,3]  # components w.r.t. the module's default basis (e)
            sage: a.display()
mkoeppe commented 4 years ago

Dependencies: #30095

mkoeppe commented 4 years ago

Changed dependencies from #30095 to #30095, #30172

mkoeppe commented 3 years ago
comment:9

Setting new milestone based on a cursory review of ticket status, priority, and last modification date.