odlgroup / odl

Operator Discretization Library https://odlgroup.github.io/odl/
Mozilla Public License 2.0
372 stars 105 forks source link

Functionals over complex spaces #590

Open adler-j opened 8 years ago

adler-j commented 8 years ago

For some applications (notably MRI, but possibly also phase contrast) it would be interesting to look at data spaces that are complex. In that case, we need to support this for the functionals as well.

Convex conjugate

To my knowledge, the issue with this is mostly that we cannot define the convex conjugate properly. The definition is usually:

f^*(x^*) = sup_x { <x^*, x> - f(x) }

This obviously becomes problematic in case X is complex, since then <x^*, x> is complex valued and this doesn't make any sense. One way to solve this, used in this article is to simply take the real part:

f^*(x^*) = sup_x { Re <x^*, x> - f(x) }

At least for the || . ||_2^2 functional, this gives the usual result, and I'm quite sure we get nice results for the norms as well.

adler-j commented 8 years ago

Bumping this. I'll go ahead with the #587 PR merge, but it causes the douglas_rachford_primal_dual_mri example to fail, since we need to define a L2 functional with a complex domain.

We could use @aringh input here.

adler-j commented 8 years ago

Bumping this issue again, we really need to fix this since this change introduced problems down the line.

kohr-h commented 8 years ago

Yes. Mathematically I think we should go for the "real part" solution since it effectively identifies C with R^2, which is probably what you usually want. In many cases we can remap the convex conjugate to well-known ones for real spaces, for example the 1-norm would correspond to the group norm 1,2 (or 2,1?).