Opened 3 years ago

# Construction of a vector frame from a family of vector fields — at Initial Version

Reported by: Owned by: egourgoulhon major sage-9.0 geometry manifolds, vector_frame tscrim Eric Gourgoulhon N/A

### Description

This ticket introduces the keyword argument `from_family` to `DifferentiableManifold.vector_frame()` to allow for constructing a vector frame from a spanning family of linearly independent vector fields:

```sage: M = Manifold(2, 'M')
sage: X.<x,y> = M.chart()
sage: e0 = M.vector_field(1+x^2, 1+y^2)
sage: e1 = M.vector_field(2, -x*y)
sage: e = M.vector_frame('e', from_family=(e0, e1)); e
Vector frame (M, (e_0,e_1))
sage: e.display()
e_0 = (x^2 + 1) d/dx + (y^2 + 1) d/dy
sage: e.display()
e_1 = 2 d/dx - x*y d/dy
sage: (e, e) == (e0, e1)
True
```

Previously, the only way to introduce the vector frame `e` was to first introduce an automorphism relating the frame `(d/dx, d/dy)` to `(e0, e1)` and to pass this automorphism to `VectorFrame.new_frame()`:

```sage: aut = M.automorphism_field()
sage: aut[:] = [[e0, e1], [e0, e1]]
sage: e = X.frame().new_frame(aut, 'e')
```

The introduction of `from_family` in `vector_frame()` simplifies this process.

Implementation details: such functionality already existed for bases of finite rank free modules; the relevant code is extracted from the method `FiniteRankFreeModule.basis()` and put into the new method `FreeModuleBasis._init_from_family()`, in order to be used in `DifferentiableManifold.vector_frame()` as well.

### Change History (0)

Note: See TracTickets for help on using tickets.