atlas[Projectors] - calculation of a mapping projectors (tangent and normal or horizontal and vertical) 

Calling Sequence: 

    Projectors(F) 

Parameters: 

    F - mapping identifier 

Description: 

The Projectors procedure allows one to calculate projectors of a mapping between manifolds (see atlas[Mapping]). If mapping F is an embedding or immersion then normal and tangent projectors are calculated. If mapping F is a submersion then horizontal and vertical projectors are calculated. The corresponding rules are as follows: 

  • Let mapping F: proc (M) options operator, arrow; N end proc  be declared by functions (see atlas[Mapping]):



    where  m = dim(M), n = dim(N);  {x[1], x[2], () .. x[m]} are local coordinates on M and  {y[1], y[2], () .. y[n]} are local coordinates on N.
 

  • If `<`(m, n) then the mapping is treated as an embedding or immersion, thus normal and tangent projectors are calculated.
 

  • If `<=`(n, m) then the mapping is treated as a submersion, thus horizontal and vertical projectors are calculated.
 

  • The procedure returns a table with corresponding indexes (normal, tangential, horizontal, vertical) and entries. The entries are corresponding tensors of type [1,1] (see examples below).
 

  • It should be pointed out that the calculation is only available if the actual metrics declared in both manifolds. To get more information see examples: Ricci-flat warped product and Geometry induced on some minimal surfaces
 

Examples: 

> restart:
with(atlas):
 

Just for right simplification:
`atlas/simp`:=proc(a)
subs({cos(phi)^2=1-sin(phi)^2},a);
normal(%);
end:
 

Domain `*`(`^`(R, 3)) 

This domain is just 3-dimensional Euclidean space:
Domain(R^3); 

`*`(`^`(R, 3))(2.1.1)
 

Declare 1-forms for to use them as a coframe:
Forms(e[j]=1); 

{e[j]}(2.1.2)
 

Declare vector fields to use them as a frame:
Vectors(E[i]); 

{E[i]}(2.1.3)
 

Declare coframe 1-forms:
Coframe(e[1]=d(x),e[2]=d(y),e[3]=d(z)); 

[e[1] = d(x), e[2] = d(y), e[3] = d(z)](2.1.4)
 

Declare frame vectors:
Frame(E[j]); 

[E[1] = Diff(``, x), E[2] = Diff(``, y), E[3] = Diff(``, z)](2.1.5)
 

Declare flat metric:
:
Metric(g=d(x)&.d(x)+d(y)&.d(y)+d(z)&.d(z)); 

g = `+`(`&.`(e[1], e[1]), `&.`(e[2], e[2]), `&.`(e[3], e[3]))(2.1.6)
 

Domain `^`(S, `1`) 

This domain is 1-sphere (a circle).
Domain(S); 

S(2.2.1)
 

Declare 1-forms for coframe:
Forms(u[k]=1); 

{e[j], u[k]}(2.2.2)
 

Declare vector fields for frame:
Vectors(U[j]); 

{U[j]}(2.2.3)
 

Coframe declaration for the sphere:
Coframe(u[1]=d(phi)); 

[u[1] = d(phi)](2.2.4)
 

Frame declaration for the sphere:
Frame(U[k]); 

[U[1] = Diff(``, phi)](2.2.5)
 

Mappings 

Mapping of the sphere into the Euclidean space `*`(`^`(R, 3)):
Mapping(psi,S,R^3,
       x=cos(phi),
       y=sin(phi),
       z=0);
 

 

psi
`.`(S, `--->`, `*`(`^`(R, 3)))(2.3.1)
 

Mapping of the Euclidean space `*`(`^`(R, 3))/ Z (Z axis is excluded) into the sphere:
Mapping(pi,R^3,S,
       phi=arctan(y/x));
 

 

pi
`.`(`*`(`^`(R, 3)), `--->`, S)(2.3.2)
 

Metric on the sphere 

After that we can calculate metric induced on the sphere by psi embedding:
Metric(G = g &/ psi); 

G = `&.`(u[1], u[1])(2.4.1)
 

psi projectors 

Calculation of the projection:
P[psi]:=Projectors(psi); 

table( [( normal ) = `+`(`*`(`+`(1, `-`(`*`(`^`(sin(phi), 2)))), `*`(`&.`(e[1], E[1]))), `*`(sin(phi), `*`(cos(phi), `*`(`&.`(e[1], E[2])))), `*`(cos(phi), `*`(sin(phi), `*`(`&.`(e[2], E[1])))), `*`(`...
table( [( normal ) = `+`(`*`(`+`(1, `-`(`*`(`^`(sin(phi), 2)))), `*`(`&.`(e[1], E[1]))), `*`(sin(phi), `*`(cos(phi), `*`(`&.`(e[1], E[2])))), `*`(cos(phi), `*`(sin(phi), `*`(`&.`(e[2], E[1])))), `*`(`...
table( [( normal ) = `+`(`*`(`+`(1, `-`(`*`(`^`(sin(phi), 2)))), `*`(`&.`(e[1], E[1]))), `*`(sin(phi), `*`(cos(phi), `*`(`&.`(e[1], E[2])))), `*`(cos(phi), `*`(sin(phi), `*`(`&.`(e[2], E[1])))), `*`(`...
table( [( normal ) = `+`(`*`(`+`(1, `-`(`*`(`^`(sin(phi), 2)))), `*`(`&.`(e[1], E[1]))), `*`(sin(phi), `*`(cos(phi), `*`(`&.`(e[1], E[2])))), `*`(cos(phi), `*`(sin(phi), `*`(`&.`(e[2], E[1])))), `*`(`...
table( [( normal ) = `+`(`*`(`+`(1, `-`(`*`(`^`(sin(phi), 2)))), `*`(`&.`(e[1], E[1]))), `*`(sin(phi), `*`(cos(phi), `*`(`&.`(e[1], E[2])))), `*`(cos(phi), `*`(sin(phi), `*`(`&.`(e[2], E[1])))), `*`(`...
(2.5.1)
 

Normal projector extraction
N[psi]:=P[psi][normal]; 

`+`(`*`(`+`(1, `-`(`*`(`^`(sin(phi), 2)))), `*`(`&.`(e[1], E[1]))), `*`(sin(phi), `*`(cos(phi), `*`(`&.`(e[1], E[2])))), `*`(cos(phi), `*`(sin(phi), `*`(`&.`(e[2], E[1])))), `*`(`^`(sin(phi), 2), `*`(...
`+`(`*`(`+`(1, `-`(`*`(`^`(sin(phi), 2)))), `*`(`&.`(e[1], E[1]))), `*`(sin(phi), `*`(cos(phi), `*`(`&.`(e[1], E[2])))), `*`(cos(phi), `*`(sin(phi), `*`(`&.`(e[2], E[1])))), `*`(`^`(sin(phi), 2), `*`(...
`+`(`*`(`+`(1, `-`(`*`(`^`(sin(phi), 2)))), `*`(`&.`(e[1], E[1]))), `*`(sin(phi), `*`(cos(phi), `*`(`&.`(e[1], E[2])))), `*`(cos(phi), `*`(sin(phi), `*`(`&.`(e[2], E[1])))), `*`(`^`(sin(phi), 2), `*`(...
(2.5.2)
 

Tangent projection extraction:
T[psi]:=P[psi][tangent]; 

`+`(`*`(`^`(sin(phi), 2), `*`(`&.`(e[1], E[1]))), `-`(`*`(sin(phi), `*`(cos(phi), `*`(`&.`(e[1], E[2]))))), `-`(`*`(cos(phi), `*`(sin(phi), `*`(`&.`(e[2], E[1]))))), `*`(`+`(1, `-`(`*`(`^`(sin(phi), 2...
`+`(`*`(`^`(sin(phi), 2), `*`(`&.`(e[1], E[1]))), `-`(`*`(sin(phi), `*`(cos(phi), `*`(`&.`(e[1], E[2]))))), `-`(`*`(cos(phi), `*`(sin(phi), `*`(`&.`(e[2], E[1]))))), `*`(`+`(1, `-`(`*`(`^`(sin(phi), 2...
(2.5.3)
 

Jump into the previous domain:
Domain(R^3); 

`*`(`^`(R, 3))(2.5.4)
 

Verify that there are no tangent or normal vectors among frame ones: 

> 'iota[E[i]](T[psi])'=iota[E[i]](T[psi]);
 

iota[E[i]](T[psi]) = `+`(`*`(`^`(sin(phi), 2), `*`(delta[1, i], `*`(E[1]))), `-`(`*`(sin(phi), `*`(cos(phi), `*`(delta[1, i], `*`(E[2]))))), `-`(`*`(sin(phi), `*`(cos(phi), `*`(delta[2, i], `*`(E[1]))...
iota[E[i]](T[psi]) = `+`(`*`(`^`(sin(phi), 2), `*`(delta[1, i], `*`(E[1]))), `-`(`*`(sin(phi), `*`(cos(phi), `*`(delta[1, i], `*`(E[2]))))), `-`(`*`(sin(phi), `*`(cos(phi), `*`(delta[2, i], `*`(E[1]))...
(2.5.5)
 

> 'iota[E[i]](N[psi])'=iota[E[i]](N[psi]);
 

iota[E[i]](N[psi]) = `+`(`*`(`+`(1, `-`(`*`(`^`(sin(phi), 2)))), `*`(delta[1, i], `*`(E[1]))), `*`(sin(phi), `*`(cos(phi), `*`(delta[1, i], `*`(E[2])))), `*`(sin(phi), `*`(cos(phi), `*`(delta[2, i], `...
iota[E[i]](N[psi]) = `+`(`*`(`+`(1, `-`(`*`(`^`(sin(phi), 2)))), `*`(delta[1, i], `*`(E[1]))), `*`(sin(phi), `*`(cos(phi), `*`(delta[1, i], `*`(E[2])))), `*`(sin(phi), `*`(cos(phi), `*`(delta[2, i], `...
(2.5.6)
 

Verify that "rotation" vector is tangent one:
Z:=cos(phi)*E[2]-sin(phi)*E[1];
'iota[Z](T[psi])'=simplify(iota[Z](T[psi]));
'iota[Z](N[psi])'=simplify(iota[Z](N[psi]));
 

 

 

`+`(`-`(`*`(sin(phi), `*`(E[1]))), `*`(cos(phi), `*`(E[2])))
iota[Z](T[psi]) = `+`(`-`(`*`(sin(phi), `*`(E[1]))), `*`(cos(phi), `*`(E[2])))
iota[Z](N[psi]) = 0(2.5.7)
 

Pi projectors 

Calculation of the projectors:
P[pi]:=Projectors(pi); 

table( [( vertical ) = `+`(`/`(`*`(`^`(x, 2), `*`(`&.`(e[1], E[1]))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `/`(`*`(y, `*`(x, `*`(`&.`(e[1], E[2])))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `...
table( [( vertical ) = `+`(`/`(`*`(`^`(x, 2), `*`(`&.`(e[1], E[1]))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `/`(`*`(y, `*`(x, `*`(`&.`(e[1], E[2])))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `...
table( [( vertical ) = `+`(`/`(`*`(`^`(x, 2), `*`(`&.`(e[1], E[1]))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `/`(`*`(y, `*`(x, `*`(`&.`(e[1], E[2])))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `...
table( [( vertical ) = `+`(`/`(`*`(`^`(x, 2), `*`(`&.`(e[1], E[1]))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `/`(`*`(y, `*`(x, `*`(`&.`(e[1], E[2])))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `...
(2.6.1)
 

Vertical projector extraction:
V[pi]:=P[pi][vertical]; 

`+`(`/`(`*`(`^`(x, 2), `*`(`&.`(e[1], E[1]))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `/`(`*`(y, `*`(x, `*`(`&.`(e[1], E[2])))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `/`(`*`(y, `*`(x, `*`(`&...
`+`(`/`(`*`(`^`(x, 2), `*`(`&.`(e[1], E[1]))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `/`(`*`(y, `*`(x, `*`(`&.`(e[1], E[2])))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `/`(`*`(y, `*`(x, `*`(`&...
(2.6.2)
 

Horizontal projector extraction:
H[pi]:=P[pi][horizontal]; 

`+`(`/`(`*`(`^`(y, 2), `*`(`&.`(e[1], E[1]))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `-`(`/`(`*`(y, `*`(x, `*`(`&.`(e[1], E[2])))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)))))), `-`(`/`(`*`(y, `*`(...
`+`(`/`(`*`(`^`(y, 2), `*`(`&.`(e[1], E[1]))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `-`(`/`(`*`(y, `*`(x, `*`(`&.`(e[1], E[2])))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)))))), `-`(`/`(`*`(y, `*`(...
(2.6.3)
 

Jump into `*`(`^`(R, 3)):
Domain(R^3); 

`*`(`^`(R, 3))(2.6.4)
 

Verify that there are no tangent or normal vectors among frame ones: 

> 'iota[E[i]](V[pi])'=iota[E[i]](V[pi]);
 

iota[E[i]](V[pi]) = `+`(`/`(`*`(`^`(x, 2), `*`(delta[1, i], `*`(E[1]))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `/`(`*`(y, `*`(x, `*`(delta[1, i], `*`(E[2])))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, ...(2.6.5)
 

> 'iota[E[i]](H[pi])'=iota[E[i]](H[pi]);
 

iota[E[i]](H[pi]) = `+`(`/`(`*`(`^`(y, 2), `*`(delta[1, i], `*`(E[1]))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `-`(`/`(`*`(y, `*`(x, `*`(delta[1, i], `*`(E[2])))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`...(2.6.6)
 

Verify that "rotation" vector is horizontal one:
X:=x*E[2]-y*E[1];
'iota[X](V[pi])'=simplify(iota[X](V[pi]));
'iota[X](H[pi])'=simplify(iota[X](H[pi]));
 

 

 

`+`(`*`(E[2], `*`(x)), `-`(`*`(y, `*`(E[1]))))
iota[X](V[pi]) = 0
iota[X](H[pi]) = `+`(`*`(E[2], `*`(x)), `-`(`*`(y, `*`(E[1]))))(2.6.7)
 

>
 

See Also:  

atlas, atlas[Domain], atlas[`&/`], atlas[Invariants].