Skip to content

Simplifications in the computation of the inverse of a transition map #26701

@egourgoulhon

Description

@egourgoulhon

We have currently:

sage: M = Manifold(2, 'M')
sage: c_xy.<x,y> = M.chart()
sage: c_uv.<u,v> = M.chart()
sage: phi = var('phi', domain='real')
sage: xy_to_uv = c_xy.transition_map(c_uv, [cos(phi)*x + sin(phi)*y,
....:                                       -sin(phi)*x + cos(phi)*y])
sage: xy_to_uv.inverse().display()
x = (u*cos(phi) - v*sin(phi))/(cos(phi)^2 + sin(phi)^2)
y = (v*cos(phi) + u*sin(phi))/(cos(phi)^2 + sin(phi)^2)

Clearly the inverse transition map lacks simplification. This results from a bug in the method CoordChange.inverse(), which makes the simplification ineffective. With this ticket, the last line becomes

sage: xy_to_uv.inverse().display()
x = u*cos(phi) - v*sin(phi)
y = v*cos(phi) + u*sin(phi)

In addition, this ticket removes the auxiliary symbolic variables xxxx* that have been introduced by CoordChange.inverse() from the list of assumptions: after the above code is run, we have currently:

sage: assumptions()
[x is real,
 y is real,
 u is real,
 v is real,
 phi is real,
 xxxx0 is real,
 xxxx1 is real]

With this ticket, this becomes:

sage: assumptions()
[x is real, y is real, u is real, v is real, phi is real]

CC: @tscrim

Component: geometry

Keywords: coordinate chart, transition map

Author: Eric Gourgoulhon

Branch/Commit: 2f76562

Reviewer: Travis Scrimshaw

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions