passagemath-symbolics 10.6.43__cp314-cp314t-musllinux_1_2_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passagemath-symbolics might be problematic. Click here for more details.
- passagemath_symbolics/__init__.py +3 -0
- passagemath_symbolics-10.6.43.dist-info/METADATA +187 -0
- passagemath_symbolics-10.6.43.dist-info/RECORD +171 -0
- passagemath_symbolics-10.6.43.dist-info/WHEEL +5 -0
- passagemath_symbolics-10.6.43.dist-info/top_level.txt +3 -0
- sage/all__sagemath_symbolics.py +17 -0
- sage/calculus/all.py +14 -0
- sage/calculus/calculus.py +2826 -0
- sage/calculus/desolvers.py +1866 -0
- sage/calculus/predefined.py +51 -0
- sage/calculus/tests.py +225 -0
- sage/calculus/var.cpython-314t-x86_64-linux-musl.so +0 -0
- sage/calculus/var.pyx +401 -0
- sage/dynamics/all__sagemath_symbolics.py +6 -0
- sage/dynamics/complex_dynamics/all.py +5 -0
- sage/dynamics/complex_dynamics/mandel_julia.py +765 -0
- sage/dynamics/complex_dynamics/mandel_julia_helper.cpython-314t-x86_64-linux-musl.so +0 -0
- sage/dynamics/complex_dynamics/mandel_julia_helper.pyx +1035 -0
- sage/ext/all__sagemath_symbolics.py +1 -0
- sage/ext_data/kenzo/CP2.txt +45 -0
- sage/ext_data/kenzo/CP3.txt +349 -0
- sage/ext_data/kenzo/CP4.txt +4774 -0
- sage/ext_data/kenzo/README.txt +49 -0
- sage/ext_data/kenzo/S4.txt +20 -0
- sage/ext_data/magma/latex/latex.m +1021 -0
- sage/ext_data/magma/latex/latex.spec +1 -0
- sage/ext_data/magma/sage/basic.m +356 -0
- sage/ext_data/magma/sage/sage.spec +1 -0
- sage/ext_data/magma/spec +9 -0
- sage/geometry/all__sagemath_symbolics.py +8 -0
- sage/geometry/hyperbolic_space/all.py +5 -0
- sage/geometry/hyperbolic_space/hyperbolic_coercion.py +743 -0
- sage/geometry/hyperbolic_space/hyperbolic_constants.py +5 -0
- sage/geometry/hyperbolic_space/hyperbolic_geodesic.py +2409 -0
- sage/geometry/hyperbolic_space/hyperbolic_interface.py +206 -0
- sage/geometry/hyperbolic_space/hyperbolic_isometry.py +1082 -0
- sage/geometry/hyperbolic_space/hyperbolic_model.py +1502 -0
- sage/geometry/hyperbolic_space/hyperbolic_point.py +621 -0
- sage/geometry/riemannian_manifolds/all.py +7 -0
- sage/geometry/riemannian_manifolds/parametrized_surface3d.py +1632 -0
- sage/geometry/riemannian_manifolds/surface3d_generators.py +461 -0
- sage/interfaces/all__sagemath_symbolics.py +1 -0
- sage/interfaces/magma.py +3017 -0
- sage/interfaces/magma_free.py +92 -0
- sage/interfaces/maple.py +1397 -0
- sage/interfaces/mathematica.py +1345 -0
- sage/interfaces/mathics.py +1312 -0
- sage/interfaces/sympy.py +1398 -0
- sage/interfaces/sympy_wrapper.py +197 -0
- sage/interfaces/tides.py +938 -0
- sage/libs/all__sagemath_symbolics.py +6 -0
- sage/manifolds/all.py +7 -0
- sage/manifolds/calculus_method.py +555 -0
- sage/manifolds/catalog.py +437 -0
- sage/manifolds/chart.py +4019 -0
- sage/manifolds/chart_func.py +3419 -0
- sage/manifolds/continuous_map.py +2183 -0
- sage/manifolds/continuous_map_image.py +155 -0
- sage/manifolds/differentiable/affine_connection.py +2475 -0
- sage/manifolds/differentiable/all.py +1 -0
- sage/manifolds/differentiable/automorphismfield.py +1383 -0
- sage/manifolds/differentiable/automorphismfield_group.py +604 -0
- sage/manifolds/differentiable/bundle_connection.py +1445 -0
- sage/manifolds/differentiable/characteristic_cohomology_class.py +1840 -0
- sage/manifolds/differentiable/chart.py +1241 -0
- sage/manifolds/differentiable/curve.py +1028 -0
- sage/manifolds/differentiable/de_rham_cohomology.py +541 -0
- sage/manifolds/differentiable/degenerate.py +559 -0
- sage/manifolds/differentiable/degenerate_submanifold.py +1671 -0
- sage/manifolds/differentiable/diff_form.py +1658 -0
- sage/manifolds/differentiable/diff_form_module.py +1062 -0
- sage/manifolds/differentiable/diff_map.py +1315 -0
- sage/manifolds/differentiable/differentiable_submanifold.py +291 -0
- sage/manifolds/differentiable/examples/all.py +1 -0
- sage/manifolds/differentiable/examples/euclidean.py +2517 -0
- sage/manifolds/differentiable/examples/real_line.py +897 -0
- sage/manifolds/differentiable/examples/sphere.py +1186 -0
- sage/manifolds/differentiable/examples/symplectic_space.py +187 -0
- sage/manifolds/differentiable/examples/symplectic_space_test.py +40 -0
- sage/manifolds/differentiable/integrated_curve.py +4035 -0
- sage/manifolds/differentiable/levi_civita_connection.py +841 -0
- sage/manifolds/differentiable/manifold.py +4254 -0
- sage/manifolds/differentiable/manifold_homset.py +1826 -0
- sage/manifolds/differentiable/metric.py +3032 -0
- sage/manifolds/differentiable/mixed_form.py +1507 -0
- sage/manifolds/differentiable/mixed_form_algebra.py +559 -0
- sage/manifolds/differentiable/multivector_module.py +800 -0
- sage/manifolds/differentiable/multivectorfield.py +1520 -0
- sage/manifolds/differentiable/poisson_tensor.py +268 -0
- sage/manifolds/differentiable/pseudo_riemannian.py +755 -0
- sage/manifolds/differentiable/pseudo_riemannian_submanifold.py +1839 -0
- sage/manifolds/differentiable/scalarfield.py +1343 -0
- sage/manifolds/differentiable/scalarfield_algebra.py +472 -0
- sage/manifolds/differentiable/symplectic_form.py +910 -0
- sage/manifolds/differentiable/symplectic_form_test.py +220 -0
- sage/manifolds/differentiable/tangent_space.py +412 -0
- sage/manifolds/differentiable/tangent_vector.py +616 -0
- sage/manifolds/differentiable/tensorfield.py +4665 -0
- sage/manifolds/differentiable/tensorfield_module.py +963 -0
- sage/manifolds/differentiable/tensorfield_paral.py +2450 -0
- sage/manifolds/differentiable/tensorfield_paral_test.py +16 -0
- sage/manifolds/differentiable/vector_bundle.py +1728 -0
- sage/manifolds/differentiable/vectorfield.py +1717 -0
- sage/manifolds/differentiable/vectorfield_module.py +2445 -0
- sage/manifolds/differentiable/vectorframe.py +1832 -0
- sage/manifolds/family.py +270 -0
- sage/manifolds/local_frame.py +1490 -0
- sage/manifolds/manifold.py +3090 -0
- sage/manifolds/manifold_homset.py +452 -0
- sage/manifolds/operators.py +359 -0
- sage/manifolds/point.py +994 -0
- sage/manifolds/scalarfield.py +3718 -0
- sage/manifolds/scalarfield_algebra.py +629 -0
- sage/manifolds/section.py +3111 -0
- sage/manifolds/section_module.py +831 -0
- sage/manifolds/structure.py +229 -0
- sage/manifolds/subset.py +2764 -0
- sage/manifolds/subsets/all.py +1 -0
- sage/manifolds/subsets/closure.py +131 -0
- sage/manifolds/subsets/pullback.py +885 -0
- sage/manifolds/topological_submanifold.py +891 -0
- sage/manifolds/trivialization.py +733 -0
- sage/manifolds/utilities.py +1348 -0
- sage/manifolds/vector_bundle.py +1342 -0
- sage/manifolds/vector_bundle_fiber.py +332 -0
- sage/manifolds/vector_bundle_fiber_element.py +111 -0
- sage/matrix/all__sagemath_symbolics.py +1 -0
- sage/matrix/matrix_symbolic_dense.cpython-314t-x86_64-linux-musl.so +0 -0
- sage/matrix/matrix_symbolic_dense.pxd +6 -0
- sage/matrix/matrix_symbolic_dense.pyx +1022 -0
- sage/matrix/matrix_symbolic_sparse.cpython-314t-x86_64-linux-musl.so +0 -0
- sage/matrix/matrix_symbolic_sparse.pxd +6 -0
- sage/matrix/matrix_symbolic_sparse.pyx +1029 -0
- sage/modules/all__sagemath_symbolics.py +1 -0
- sage/modules/vector_callable_symbolic_dense.py +105 -0
- sage/modules/vector_symbolic_dense.py +116 -0
- sage/modules/vector_symbolic_sparse.py +118 -0
- sage/rings/all__sagemath_symbolics.py +4 -0
- sage/rings/asymptotic/all.py +6 -0
- sage/rings/asymptotic/asymptotic_expansion_generators.py +1485 -0
- sage/rings/asymptotic/asymptotic_ring.py +4858 -0
- sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py +4153 -0
- sage/rings/asymptotic/growth_group.py +5373 -0
- sage/rings/asymptotic/growth_group_cartesian.py +1400 -0
- sage/rings/asymptotic/term_monoid.py +5237 -0
- sage/rings/function_field/all__sagemath_symbolics.py +2 -0
- sage/rings/polynomial/all__sagemath_symbolics.py +1 -0
- sage/symbolic/all.py +15 -0
- sage/symbolic/assumptions.py +985 -0
- sage/symbolic/benchmark.py +93 -0
- sage/symbolic/callable.py +459 -0
- sage/symbolic/complexity_measures.py +35 -0
- sage/symbolic/constants.py +1287 -0
- sage/symbolic/expression_conversion_algebraic.py +310 -0
- sage/symbolic/expression_conversion_sympy.py +317 -0
- sage/symbolic/expression_conversions.py +1713 -0
- sage/symbolic/function_factory.py +355 -0
- sage/symbolic/integration/all.py +1 -0
- sage/symbolic/integration/external.py +270 -0
- sage/symbolic/integration/integral.py +1115 -0
- sage/symbolic/maxima_wrapper.py +162 -0
- sage/symbolic/operators.py +267 -0
- sage/symbolic/random_tests.py +462 -0
- sage/symbolic/relation.py +1907 -0
- sage/symbolic/ring.cpython-314t-x86_64-linux-musl.so +0 -0
- sage/symbolic/ring.pxd +5 -0
- sage/symbolic/ring.pyx +1396 -0
- sage/symbolic/subring.py +1025 -0
- sage/symbolic/symengine.py +19 -0
- sage/symbolic/tests.py +40 -0
- sage/symbolic/units.py +1470 -0
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-symbolics
|
|
2
|
+
r"""
|
|
3
|
+
Vector Bundle Fibers
|
|
4
|
+
|
|
5
|
+
The class :class:`VectorBundleFiber` implements fibers over a vector bundle.
|
|
6
|
+
|
|
7
|
+
AUTHORS:
|
|
8
|
+
|
|
9
|
+
- Michael Jung (2019): initial version
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
#******************************************************************************
|
|
13
|
+
# Copyright (C) 2019 Michael Jung <micjung at uni-potsdam.de>
|
|
14
|
+
#
|
|
15
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
16
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
17
|
+
# the License, or (at your option) any later version.
|
|
18
|
+
# http://www.gnu.org/licenses/
|
|
19
|
+
#******************************************************************************
|
|
20
|
+
|
|
21
|
+
from sage.manifolds.vector_bundle_fiber_element import VectorBundleFiberElement
|
|
22
|
+
from sage.symbolic.ring import SR
|
|
23
|
+
from sage.tensor.modules.finite_rank_free_module import FiniteRankFreeModule
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class VectorBundleFiber(FiniteRankFreeModule):
|
|
27
|
+
r"""
|
|
28
|
+
Fiber of a given vector bundle at a given point.
|
|
29
|
+
|
|
30
|
+
Let `\pi: E \to M` be a vector bundle of rank `n` over the field `K`
|
|
31
|
+
(see :class:`~sage.manifolds.vector_bundle.TopologicalVectorBundle`) and
|
|
32
|
+
`p \in M`. The fiber `E_p` at `p` is defined via `E_p := \pi^{-1}(p)` and
|
|
33
|
+
takes the structure of an `n`-dimensional vector space over the field `K`.
|
|
34
|
+
|
|
35
|
+
INPUT:
|
|
36
|
+
|
|
37
|
+
- ``vector_bundle`` -- :class:`~sage.manifolds.vector_bundle.TopologicalVectorBundle`;
|
|
38
|
+
vector bundle `E` on which the fiber is defined
|
|
39
|
+
- ``point`` -- :class:`~sage.manifolds.point.ManifoldPoint`;
|
|
40
|
+
point `p` at which the fiber is defined
|
|
41
|
+
|
|
42
|
+
EXAMPLES:
|
|
43
|
+
|
|
44
|
+
A vector bundle fiber in a trivial rank 2 vector bundle over a
|
|
45
|
+
4-dimensional topological manifold::
|
|
46
|
+
|
|
47
|
+
sage: M = Manifold(4, 'M', structure='top')
|
|
48
|
+
sage: X.<x,y,z,t> = M.chart()
|
|
49
|
+
sage: p = M((0,0,0,0), name='p')
|
|
50
|
+
sage: E = M.vector_bundle(2, 'E')
|
|
51
|
+
sage: e = E.local_frame('e')
|
|
52
|
+
sage: Ep = E.fiber(p); Ep
|
|
53
|
+
Fiber of E at Point p on the 4-dimensional topological manifold M
|
|
54
|
+
|
|
55
|
+
Fibers are free modules of finite rank over
|
|
56
|
+
:class:`~sage.symbolic.ring.SymbolicRing`
|
|
57
|
+
(actually vector spaces of finite dimension over the vector bundle
|
|
58
|
+
field `K`, here `K=\RR`)::
|
|
59
|
+
|
|
60
|
+
sage: Ep.base_ring()
|
|
61
|
+
Symbolic Ring
|
|
62
|
+
sage: Ep.category()
|
|
63
|
+
Category of finite dimensional vector spaces over Symbolic Ring
|
|
64
|
+
sage: Ep.rank()
|
|
65
|
+
2
|
|
66
|
+
sage: dim(Ep)
|
|
67
|
+
2
|
|
68
|
+
|
|
69
|
+
The fiber is automatically endowed with bases deduced from the local frames
|
|
70
|
+
around the point::
|
|
71
|
+
|
|
72
|
+
sage: Ep.bases()
|
|
73
|
+
[Basis (e_0,e_1) on the Fiber of E at Point p on the 4-dimensional
|
|
74
|
+
topological manifold M]
|
|
75
|
+
sage: E.frames()
|
|
76
|
+
[Local frame (E|_M, (e_0,e_1))]
|
|
77
|
+
|
|
78
|
+
At this stage, only one basis has been defined in the fiber, but new bases
|
|
79
|
+
can be added from local frames on the vector bundle by means of the method
|
|
80
|
+
:meth:`~sage.manifolds.local_frame.LocalFrame.at`::
|
|
81
|
+
|
|
82
|
+
sage: aut = E.section_module().automorphism()
|
|
83
|
+
sage: aut[:] = [[-1, x], [y, 2]]
|
|
84
|
+
sage: f = e.new_frame(aut, 'f')
|
|
85
|
+
sage: fp = f.at(p); fp
|
|
86
|
+
Basis (f_0,f_1) on the Fiber of E at Point p on the 4-dimensional
|
|
87
|
+
topological manifold M
|
|
88
|
+
sage: Ep.bases()
|
|
89
|
+
[Basis (e_0,e_1) on the Fiber of E at Point p on the 4-dimensional
|
|
90
|
+
topological manifold M,
|
|
91
|
+
Basis (f_0,f_1) on the Fiber of E at Point p on the 4-dimensional
|
|
92
|
+
topological manifold M]
|
|
93
|
+
|
|
94
|
+
The changes of bases are applied to the fibers::
|
|
95
|
+
|
|
96
|
+
sage: f[1].display(e) # second component of frame f
|
|
97
|
+
f_1 = x e_0 + 2 e_1
|
|
98
|
+
sage: ep = e.at(p)
|
|
99
|
+
sage: fp[1].display(ep) # second component of frame f at p
|
|
100
|
+
f_1 = 2 e_1
|
|
101
|
+
|
|
102
|
+
All the bases defined on ``Ep`` are on the same footing. Accordingly the
|
|
103
|
+
fiber is not in the category of modules with a distinguished basis::
|
|
104
|
+
|
|
105
|
+
sage: Ep in ModulesWithBasis(SR)
|
|
106
|
+
False
|
|
107
|
+
|
|
108
|
+
It is simply in the category of modules::
|
|
109
|
+
|
|
110
|
+
sage: Ep in Modules(SR)
|
|
111
|
+
True
|
|
112
|
+
|
|
113
|
+
Since the base ring is a field, it is actually in the category of
|
|
114
|
+
vector spaces::
|
|
115
|
+
|
|
116
|
+
sage: Ep in VectorSpaces(SR)
|
|
117
|
+
True
|
|
118
|
+
|
|
119
|
+
A typical element::
|
|
120
|
+
|
|
121
|
+
sage: v = Ep.an_element(); v
|
|
122
|
+
Vector in the fiber of E at Point p on the 4-dimensional topological
|
|
123
|
+
manifold M
|
|
124
|
+
sage: v.display()
|
|
125
|
+
e_0 + 2 e_1
|
|
126
|
+
sage: v.parent()
|
|
127
|
+
Fiber of E at Point p on the 4-dimensional topological manifold M
|
|
128
|
+
|
|
129
|
+
The zero vector::
|
|
130
|
+
|
|
131
|
+
sage: Ep.zero()
|
|
132
|
+
Vector zero in the fiber of E at Point p on the 4-dimensional
|
|
133
|
+
topological manifold M
|
|
134
|
+
sage: Ep.zero().display()
|
|
135
|
+
zero = 0
|
|
136
|
+
sage: Ep.zero().parent()
|
|
137
|
+
Fiber of E at Point p on the 4-dimensional topological manifold M
|
|
138
|
+
|
|
139
|
+
Fibers are unique::
|
|
140
|
+
|
|
141
|
+
sage: E.fiber(p) is Ep
|
|
142
|
+
True
|
|
143
|
+
sage: p1 = M.point((0,0,0,0))
|
|
144
|
+
sage: E.fiber(p1) is Ep
|
|
145
|
+
True
|
|
146
|
+
|
|
147
|
+
even if points are different instances::
|
|
148
|
+
|
|
149
|
+
sage: p1 is p
|
|
150
|
+
False
|
|
151
|
+
|
|
152
|
+
but ``p1`` and ``p`` share the same fiber because they compare equal::
|
|
153
|
+
|
|
154
|
+
sage: p1 == p
|
|
155
|
+
True
|
|
156
|
+
|
|
157
|
+
.. SEEALSO::
|
|
158
|
+
|
|
159
|
+
:class:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule`
|
|
160
|
+
for more documentation.
|
|
161
|
+
"""
|
|
162
|
+
Element = VectorBundleFiberElement
|
|
163
|
+
|
|
164
|
+
def __init__(self, vector_bundle, point):
|
|
165
|
+
r"""
|
|
166
|
+
Construct a fiber of a vector bundle.
|
|
167
|
+
|
|
168
|
+
TESTS::
|
|
169
|
+
|
|
170
|
+
sage: M = Manifold(3, 'M', structure='top')
|
|
171
|
+
sage: X.<x,y,z> = M.chart()
|
|
172
|
+
sage: p = M((0,0,0), name='p')
|
|
173
|
+
sage: E = M.vector_bundle(2, 'E')
|
|
174
|
+
sage: e = E.local_frame('e')
|
|
175
|
+
sage: Ep = E.fiber(p)
|
|
176
|
+
sage: TestSuite(Ep).run()
|
|
177
|
+
"""
|
|
178
|
+
if point._manifold is not vector_bundle._base_space:
|
|
179
|
+
raise ValueError("Point must be an element "
|
|
180
|
+
"of {}".format(vector_bundle._manifold))
|
|
181
|
+
name = "{}_{}".format(vector_bundle._name, point._name)
|
|
182
|
+
latex_name = r'{}_{{{}}}'.format(vector_bundle._latex_name,
|
|
183
|
+
point._latex_name)
|
|
184
|
+
self._rank = vector_bundle._rank
|
|
185
|
+
self._vbundle = vector_bundle
|
|
186
|
+
self._point = point
|
|
187
|
+
self._base_space = point._manifold
|
|
188
|
+
FiniteRankFreeModule.__init__(self, SR, self._rank, name=name,
|
|
189
|
+
latex_name=latex_name,
|
|
190
|
+
start_index=self._base_space._sindex)
|
|
191
|
+
###
|
|
192
|
+
# Construct basis
|
|
193
|
+
self._frame_bases = {} # dictionary of bases of the vector bundle fiber
|
|
194
|
+
# derived from local frames around the point
|
|
195
|
+
# (keys: local frames)
|
|
196
|
+
self._def_basis = None
|
|
197
|
+
for frame in vector_bundle._frames:
|
|
198
|
+
# the frame is used to construct a basis of the vector bundle fiber
|
|
199
|
+
# only if it is a frame for the given point:
|
|
200
|
+
if point in frame.domain():
|
|
201
|
+
coframe = frame.coframe()
|
|
202
|
+
basis = self.basis(frame._symbol,
|
|
203
|
+
latex_symbol=frame._latex_symbol,
|
|
204
|
+
indices=frame._indices,
|
|
205
|
+
latex_indices=frame._latex_indices,
|
|
206
|
+
symbol_dual=coframe._symbol,
|
|
207
|
+
latex_symbol_dual=coframe._latex_symbol)
|
|
208
|
+
self._frame_bases[frame] = basis
|
|
209
|
+
if self._def_basis is None:
|
|
210
|
+
self._def_basis = basis # Declare the first basis as default
|
|
211
|
+
# Initialization of the changes of bases from the existing changes of
|
|
212
|
+
# frames around the point:
|
|
213
|
+
for frame_pair, automorph in self._vbundle._frame_changes.items():
|
|
214
|
+
if point in automorph._fmodule.domain():
|
|
215
|
+
frame1, frame2 = frame_pair[0], frame_pair[1]
|
|
216
|
+
fr1, fr2 = None, None
|
|
217
|
+
for frame in self._frame_bases:
|
|
218
|
+
if frame1 in frame._subframes:
|
|
219
|
+
fr1 = frame
|
|
220
|
+
break
|
|
221
|
+
for frame in self._frame_bases:
|
|
222
|
+
if frame2 in frame._subframes:
|
|
223
|
+
fr2 = frame
|
|
224
|
+
break
|
|
225
|
+
if fr1 is not None and fr2 is not None:
|
|
226
|
+
basis1 = self._frame_bases[fr1]
|
|
227
|
+
basis2 = self._frame_bases[fr2]
|
|
228
|
+
auto = self.automorphism()
|
|
229
|
+
for frame, comp in automorph._components.items():
|
|
230
|
+
try:
|
|
231
|
+
basis = None
|
|
232
|
+
if frame is frame1:
|
|
233
|
+
basis = basis1
|
|
234
|
+
if frame is frame2:
|
|
235
|
+
basis = basis2
|
|
236
|
+
if basis is not None:
|
|
237
|
+
cauto = auto.add_comp(basis)
|
|
238
|
+
for ind, val in comp._comp.items():
|
|
239
|
+
cauto._comp[ind] = val(point)
|
|
240
|
+
except ValueError:
|
|
241
|
+
pass
|
|
242
|
+
self._basis_changes[(basis1, basis2)] = auto
|
|
243
|
+
|
|
244
|
+
def construction(self):
|
|
245
|
+
r"""
|
|
246
|
+
TESTS::
|
|
247
|
+
|
|
248
|
+
sage: M = Manifold(3, 'M', structure='top')
|
|
249
|
+
sage: X.<x,y,z> = M.chart()
|
|
250
|
+
sage: p = M((0,0,0), name='p')
|
|
251
|
+
sage: E = M.vector_bundle(2, 'E')
|
|
252
|
+
sage: E.fiber(p).construction() is None
|
|
253
|
+
True
|
|
254
|
+
"""
|
|
255
|
+
return None
|
|
256
|
+
|
|
257
|
+
def _repr_(self):
|
|
258
|
+
r"""
|
|
259
|
+
String representation of ``self``.
|
|
260
|
+
|
|
261
|
+
TESTS::
|
|
262
|
+
|
|
263
|
+
sage: M = Manifold(3, 'M', structure='top')
|
|
264
|
+
sage: X.<x,y,z> = M.chart()
|
|
265
|
+
sage: p = M((0,0,0), name='p')
|
|
266
|
+
sage: E = M.vector_bundle(2, 'E')
|
|
267
|
+
sage: E.fiber(p)._repr_()
|
|
268
|
+
'Fiber of E at Point p on the 3-dimensional topological manifold M'
|
|
269
|
+
"""
|
|
270
|
+
return "Fiber of {} at {}".format(self._vbundle._name,
|
|
271
|
+
self._point)
|
|
272
|
+
|
|
273
|
+
def dimension(self):
|
|
274
|
+
r"""
|
|
275
|
+
Return the vector space dimension of ``self``.
|
|
276
|
+
|
|
277
|
+
EXAMPLES::
|
|
278
|
+
|
|
279
|
+
sage: M = Manifold(3, 'M', structure='top')
|
|
280
|
+
sage: X.<x,y,z> = M.chart()
|
|
281
|
+
sage: p = M((0,0,0), name='p')
|
|
282
|
+
sage: E = M.vector_bundle(2, 'E')
|
|
283
|
+
sage: Ep = E.fiber(p)
|
|
284
|
+
sage: Ep.dim()
|
|
285
|
+
2
|
|
286
|
+
"""
|
|
287
|
+
# The dimension is the rank of self as a free module:
|
|
288
|
+
return self._rank
|
|
289
|
+
|
|
290
|
+
dim = dimension
|
|
291
|
+
|
|
292
|
+
def _an_element_(self):
|
|
293
|
+
r"""
|
|
294
|
+
Construct some (unnamed) vector in ``self``.
|
|
295
|
+
|
|
296
|
+
EXAMPLES::
|
|
297
|
+
|
|
298
|
+
sage: M = Manifold(2, 'M', structure='top')
|
|
299
|
+
sage: X.<x,y> = M.chart()
|
|
300
|
+
sage: E = M.vector_bundle(2, 'E')
|
|
301
|
+
sage: e = E.local_frame('e')
|
|
302
|
+
sage: p = M.point((3,-2), name='p')
|
|
303
|
+
sage: Ep = E.fiber(p)
|
|
304
|
+
sage: Ep._an_element_()
|
|
305
|
+
Vector in the fiber of E at Point p on the 2-dimensional topological
|
|
306
|
+
manifold M
|
|
307
|
+
sage: Ep._an_element_().display()
|
|
308
|
+
e_0 + 2 e_1
|
|
309
|
+
"""
|
|
310
|
+
resu = self.element_class(self)
|
|
311
|
+
if self._def_basis is not None:
|
|
312
|
+
resu.set_comp()[:] = range(1, self._rank + 1)
|
|
313
|
+
return resu
|
|
314
|
+
|
|
315
|
+
def base_point(self):
|
|
316
|
+
r"""
|
|
317
|
+
Return the manifold point over which ``self`` is defined.
|
|
318
|
+
|
|
319
|
+
EXAMPLES::
|
|
320
|
+
|
|
321
|
+
sage: M = Manifold(2, 'M', structure='top')
|
|
322
|
+
sage: X.<x,y> = M.chart()
|
|
323
|
+
sage: E = M.vector_bundle(2, 'E')
|
|
324
|
+
sage: e = E.local_frame('e')
|
|
325
|
+
sage: p = M.point((3,-2), name='p')
|
|
326
|
+
sage: Ep = E.fiber(p)
|
|
327
|
+
sage: Ep.base_point()
|
|
328
|
+
Point p on the 2-dimensional topological manifold M
|
|
329
|
+
sage: p is Ep.base_point()
|
|
330
|
+
True
|
|
331
|
+
"""
|
|
332
|
+
return self._point
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-symbolics
|
|
2
|
+
r"""
|
|
3
|
+
Vector Bundle Fiber Elements
|
|
4
|
+
|
|
5
|
+
The class :class:`VectorBundleFiberElement` implements vectors in the fiber of
|
|
6
|
+
a vector bundle.
|
|
7
|
+
|
|
8
|
+
AUTHORS:
|
|
9
|
+
|
|
10
|
+
- Michael Jung (2019): initial version
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
#******************************************************************************
|
|
14
|
+
# Copyright (C) 2019 Michael Jung <micjung at uni-potsdam.de>
|
|
15
|
+
#
|
|
16
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
17
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
18
|
+
# the License, or (at your option) any later version.
|
|
19
|
+
# http://www.gnu.org/licenses/
|
|
20
|
+
#******************************************************************************
|
|
21
|
+
|
|
22
|
+
from sage.tensor.modules.free_module_element import FiniteRankFreeModuleElement
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class VectorBundleFiberElement(FiniteRankFreeModuleElement):
|
|
26
|
+
r"""
|
|
27
|
+
Vector in a fiber of a vector bundle at the given point.
|
|
28
|
+
|
|
29
|
+
INPUT:
|
|
30
|
+
|
|
31
|
+
- ``parent`` -- :class:`~sage.manifolds.vector_bundle_fiber.VectorBundleFiber`;
|
|
32
|
+
the fiber to which the vector belongs
|
|
33
|
+
- ``name`` -- (default: ``None``) string; symbol given to the vector
|
|
34
|
+
- ``latex_name`` -- (default: ``None``) string; LaTeX symbol to denote
|
|
35
|
+
the vector; if ``None``, ``name`` will be used
|
|
36
|
+
|
|
37
|
+
EXAMPLES:
|
|
38
|
+
|
|
39
|
+
A vector `v` in a fiber of a rank 2 vector bundle::
|
|
40
|
+
|
|
41
|
+
sage: M = Manifold(2, 'M', structure='top')
|
|
42
|
+
sage: X.<x,y> = M.chart()
|
|
43
|
+
sage: p = M((1,-1), name='p')
|
|
44
|
+
sage: E = M.vector_bundle(2, 'E')
|
|
45
|
+
sage: e = E.local_frame('e')
|
|
46
|
+
sage: Ep = E.fiber(p)
|
|
47
|
+
sage: v = Ep((-2,1), name='v'); v
|
|
48
|
+
Vector v in the fiber of E at Point p on the 2-dimensional topological
|
|
49
|
+
manifold M
|
|
50
|
+
sage: v.display()
|
|
51
|
+
v = -2 e_0 + e_1
|
|
52
|
+
sage: v.parent()
|
|
53
|
+
Fiber of E at Point p on the 2-dimensional topological manifold M
|
|
54
|
+
sage: v in Ep
|
|
55
|
+
True
|
|
56
|
+
|
|
57
|
+
.. SEEALSO::
|
|
58
|
+
|
|
59
|
+
:class:`~sage.tensor.modules.free_module_element.FiniteRankFreeModuleElement`
|
|
60
|
+
for more documentation.
|
|
61
|
+
"""
|
|
62
|
+
def __init__(self, parent, name=None, latex_name=None):
|
|
63
|
+
r"""
|
|
64
|
+
Construct a vector in the given fiber of a given vector bundle.
|
|
65
|
+
|
|
66
|
+
TESTS::
|
|
67
|
+
|
|
68
|
+
sage: M = Manifold(2, 'M', structure='top')
|
|
69
|
+
sage: X.<x,y> = M.chart()
|
|
70
|
+
sage: p = M((1,-1), name='p')
|
|
71
|
+
sage: E = M.vector_bundle(2, 'E')
|
|
72
|
+
sage: e = E.local_frame('e')
|
|
73
|
+
sage: Ep = E.fiber(p)
|
|
74
|
+
sage: v = Ep.element_class(Ep, name='v') ; v
|
|
75
|
+
Vector v in the fiber of E at Point p on the 2-dimensional
|
|
76
|
+
topological manifold M
|
|
77
|
+
sage: v[:] = 5, -3/2
|
|
78
|
+
sage: TestSuite(v).run()
|
|
79
|
+
"""
|
|
80
|
+
FiniteRankFreeModuleElement.__init__(self, parent, name=name,
|
|
81
|
+
latex_name=latex_name)
|
|
82
|
+
# Extra data (with respect to FiniteRankFreeModuleElement):
|
|
83
|
+
self._point = parent._point
|
|
84
|
+
self._vbundle = parent._vbundle
|
|
85
|
+
|
|
86
|
+
def _repr_(self):
|
|
87
|
+
r"""
|
|
88
|
+
String representation of ``self``.
|
|
89
|
+
|
|
90
|
+
TESTS::
|
|
91
|
+
|
|
92
|
+
sage: M = Manifold(2, 'M', structure='top')
|
|
93
|
+
sage: X.<x,y> = M.chart()
|
|
94
|
+
sage: p = M((1,-1), name='p')
|
|
95
|
+
sage: E = M.vector_bundle(2, 'E')
|
|
96
|
+
sage: e = E.local_frame('e')
|
|
97
|
+
sage: Ep = E.fiber(p)
|
|
98
|
+
sage: v = Ep([-3,2], name='v')
|
|
99
|
+
sage: v._repr_()
|
|
100
|
+
'Vector v in the fiber of E at Point p on the 2-dimensional
|
|
101
|
+
topological manifold M'
|
|
102
|
+
sage: repr(v) # indirect doctest
|
|
103
|
+
'Vector v in the fiber of E at Point p on the 2-dimensional
|
|
104
|
+
topological manifold M'
|
|
105
|
+
"""
|
|
106
|
+
desc = "Vector "
|
|
107
|
+
if self._name:
|
|
108
|
+
desc += str(self._name) + " "
|
|
109
|
+
desc += "in the fiber of {} at {}".format(self._vbundle._name,
|
|
110
|
+
self._point)
|
|
111
|
+
return desc
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-symbolics
|
|
Binary file
|