コード例 #1
0
patch = Patch('P', m)

rect = CoordSystem('rect', patch)
polar = CoordSystem('polar', patch)

print(rect in patch.coord_systems)

polar.connect_to(rect, [r, theta], [r*cos(theta), r*sin(theta)])

print(polar.coord_tuple_transform_to(rect, [0, 2]))
print(polar.coord_tuple_transform_to(rect, [2, pi/2]))
print(rect.coord_tuple_transform_to(polar, [1, 1]).applyfunc(simplify))

print(polar.jacobian(rect, [r, theta]))

p = polar.point([1, 3*pi/4])
print(rect.point_to_coords(p))
print(rect.coord_function(0)(p))
print(rect.coord_function(1)(p))

v_x = rect.base_vector(0)
x = rect.coord_function(0)
print(v_x(x))
print(v_x(v_x(x)))

v_r = polar.base_vector(0)
print(v_r(x))
# ^ ????

dx = rect.base_oneform(0)
print(dx(v_x))
コード例 #2
0
# https://krastanov.wordpress.com/2012/06/30/part-1-what-is-a-tensor-and-how-is-it-implemented-in-the-diffgeom-sympy-module/

import numpy
import scipy
from sympy.diffgeom import CoordSystem, Manifold, Patch

m = Manifold("my_manifold", 2)  # A 2D manifold called 'my_manifold'
p = Patch("my_patch", m)  # A patch called 'my_patch'

cs_r = CoordSystem("R", p)  # A coordinate system called 'R' (for rectangular)
point = cs_r.point([1, 1])  # A point with coordinates (1, 1)

print(point)