#19405: Add lyapunov_rank() method for polyhedral cones
-------------------------------------+-------------------------------------
Reporter: mjo | Owner:
Type: enhancement | Status: needs_review
Priority: major | Milestone: sage-6.10
Component: geometry | Resolution:
Keywords: | Merged in:
Authors: Michael Orlitzky | Reviewers:
Report Upstream: N/A | Work issues:
Branch: | Commit:
u/novoselt/ticket/19405 | d01c7ab1915d95178b44c2d42f43228ca7affdc2
Dependencies: #19368 | Stopgaps:
-------------------------------------+-------------------------------------
Changes (by mjo):
* commit: 30ea08309c5a63d864c05e5267a35c3a4090c85d =>
d01c7ab1915d95178b44c2d42f43228ca7affdc2
Comment:
Replying to [comment:18 novoselt]:
> `REFERENCES:` block in `lyapunov_rank` should be reformatted perhaps? Or
is there a reason why some entries are in Spinx notation and others are
not?
The docbuild process throws a fit about duplicate references -- those two
appear as references to `discrete_complementarity_set()` and
`lyapunov_like_basis()`. That leaves two bad choices: decide it's okay for
your build system to spit out big red errors, or mess up the formatting of
the references block. I flipped a coin.
> Not for this ticket - couldn't you use this more efficient algorithm for
computing the Lyapunov basis as well? I.e. compute it for the restriction
and then modify appropriately to account for the space and trivial
factors?
Probably =)
Any closed convex cone `K` is isomorphic to a cartesian product of three
factors:
1. `K.solid_restriction().strict_quotient()`
2. `K.linear_subspace()`
3. The trivial cone in `K.span().complement()`
Suppose some matrix `A` sends the cone `K` to this nice representation as
a product. If we let `L` be a 3x3 block matrix, then you can figure out
what the entries should be if `L` is to be Lyapunov-like on `A(K)`. That's
basically what I did in Lemma 1 in the paper, but then I threw away some
information and just counted dimensions.
The block entries of `L` will be one of three things:
1. Lyapunov-like transformations on
`K.solid_restriction().strict_quotient()`
2. Zero
3. Arbitrary
You can fill them in with some coordinate juggling. Afterwards,
Proposition 5 shows you how to get back in terms of `K`: simply conjugate
by the matrix `A` that put `K` into the nice cartesian product. The only
complications I see are aesthetic.
And I told you this boring story... so that I would have a good example
below!
> I think it would be better to have `solid_restriction` return the
original cone if it is already solid. The amount of time required for the
check is not much compared to constructing a new cone and the advantages
are common sense and being able to reuse all cached data. My version of
changes are posted.
The problem I foresee with this is that it gives you different behavior
for solid/nonsolid cones. If `K` is solid, you'll get its representation
in one basis, but if it's not, you'll get it in another basis.
Suppose I actually wanted to implement the fast `lyapunov_like_basis`
algorithm above. I would need to know which change-of-basis occurs when I
call `K.solid_restriction()`, because I would eventually need to do a
conjugation involving it. But the change-of-basis depends on whether or
not `K` was solid to begin with.
In similar cases where you need to know what happened in
`solid_restriction()`, you'll need to prefix that call with `if
K.solid()...`, duplicating the check inside the method. Two possible
behaviors inside the function forces two possible responses outside it.
Everything else looks fine, tests pass, etc.
----
New commits:
||[http://git.sagemath.org/sage.git/commit/?id=d01c7ab1915d95178b44c2d42f43228ca7affdc2
d01c7ab]||{{{Reviewer tweaks.}}}||
--
Ticket URL: <http://trac.sagemath.org/ticket/19405#comment:20>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.