jump-dev / Convex.jl

A Julia package for disciplined convex programming
https://jump.dev/Convex.jl/stable/
Other
572 stars 123 forks source link

Missing partial trace #80

Closed marcusps closed 7 years ago

marcusps commented 9 years ago

Convex.jl does not offer a partial trace atom. Partial traces are very common in physics applications (statistical mechanics, quantum information, condensed matter, etc), so it would be very helpful to have such a functionality in the library.

Although they are linear maps, they are completely positive linear maps, meaning that they take a positive-semidefinite operator to another positive semi-definite operator even when acting on only part of an operator (i.e., a tensor product factor). As suggested in this mailing list thread, it seems like in order to take advantage of this property the partial trace would have to be implemented as an atom.

marcusps commented 9 years ago

I should add that most aspects of the atom appear straightforward to implement, it is just not entirely clear to me how to generate the appropriate conical forms, as the docs are somewhat light on how to add features to Convex.jl.

madeleineudell commented 9 years ago

yes, we need to add more info to the docs on how to add atoms. for now, consider this recipe to make an atom implementing the function f(x):

thomasschiet commented 8 years ago

I have implemented the partial trace and submitted a PR (#147).

Ayush-iitkgp commented 7 years ago

Shall we close this issue @madeleineudell ?