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))
# 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)