Lesson 8: Pullbacks of DifferentialForms - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


DifferentialGeometry Lessons

 

Lesson 8: The Pullback of a Differential Form by a Transformation

 

 

Overview

Pullback

Application 1: Integral Manifolds of Exterior Differential Systems

Integration

Stokes Theorem

The homotopy operator for the de Rham complex -- the cylinder construction.

Exercises

Overview

 

In this lesson, you will learn to do the following:

– 

Pullback a differential form.

– 

Determine if a submanifold is a integral manifold to an exterior differential system.

– 

Integrate a differential form.

– 

Check the invariance of a function, vector field, differential form, or tensor.

– 

Apply the "cylinder construction" option for the DeRhamHomotopy command.

 

Pullback

 

The basic properties of the pullback are listed in Exercise 5.  Here we illustrate the fact that the pointwise pullback of a differential 1-form can be computed directly from the Jacobian matrix J of the transformation by simply multiplying the components of the 1-form (as a row vector) by J.

with(DifferentialGeometry):

DGsetup([x, y, z], M):

M > 

DGsetup([u, v], N):

 

Define a transformation psi, a 1-form alpha and a point p.

N > 

psi := Transformation(M, N,[u = (x^2 + y^2), v = z^2 - y^2]);

ψu=x2+y2,v=z2y2

(2.1)
M > 

alpha := evalDG(1/2*v*du - 1/2*u*dv);

αvdu2udv2

(2.2)
N > 

p := [x = 2, y = 3, z = 4];

px=2,y=3,z=4

(2.3)

 

We pull alpha back using psi and evaluate the result at p.

N > 

theta := Pullback(psi, alpha);

θz2+y2xdx+yx2+yz2dyx2+y2zdz

(2.4)
M > 

theta1 := eval(theta, p);

θ114dx+60dy52dz

(2.5)

 

Let's recalculate the pullback of the form alpha using the Jacobian of psi.  First, we need the image of p under psi.

M > 

q := ApplyTransformation(psi, p);

qu=13,v=7

(2.6)

 

Evaluate alpha at q.

N > 

alpha1 := eval(alpha, q);

α17du213dv2

(2.7)

 

Use DGinfo to get the coefficients of alpha1 and the Jacobian J of phi.

N > 

A := Tools:-DGinfo(alpha1, "CoefficientList", "all");

A72,132

(2.8)
N > 

J := eval(Tools:-DGinfo(psi, "JacobianMatrix"), p);

J460068

(2.9)

 

Calculate the coefficients of the pullback of alpha1 by phi using matrix multiplication.

N > 

B := LinearAlgebra:-Transpose(Vector(A)).J;

B146052

(2.10)
N > 

theta2 := DGzip(B, [dx, dy, dz], "plus");

θ214dx+60dy52dz

(2.11)

 

Application 1: Integral Manifolds of Exterior Differential Systems

 

M > 

restart;with(DifferentialGeometry):

 

Let Omega be an exterior differential system (EDS) on a manifold M.  An integral manifold of Omega is an immersion sigma : N -> M such that sigma^*(omega) = 0 for all differential p-forms omega in Omega.  If Omega is generated, as a differential ideal, by forms omega[1], omega[2], ... omega[N], then sigma is an integral manifold if and only if the pullback sigma^*(omega[i]) = 0 for i = 1 ... N.  The forms omega[i] need not be 1-forms.

 

In each of the following examples, we check that the map sigma is an integral manifold for the given EDS Omega.

 

Example 1.  This EDS is the canonical contact system on the jet space J^3(R, R).

 DGsetup([x], N1): DGsetup([x, y, y1, y2, y3], M1):

M1 > 

Omega := evalDG([dy - y1*dx, dy1 - y2*dx, dy2 - y3*dx]);

Ωy1dx+dy,y2dx+dy1,y3dx+dy2

(3.1)
M1 > 

sigma := Transformation(N1, M1, [x = x, y = f(x), y1 = diff(f(x), x), y2 = diff(f(x), x$2), y3 = diff(f(x), x$3)]);

σx=x,y=fx,y1=ⅆⅆxfx,y2=ⅆ2ⅆx2fx,y3=ⅆ3ⅆx3fx

(3.2)
N1 > 

Pullback(sigma, Omega);

0dx,0dx,0dx

(3.3)

 

Example 2.  This EDS is the canonical contact system on the jet space J^1(R^2, R).

N1 > 

DGsetup([x, y], N2):

N2 > 

DGsetup([x, y, u, p, q, r, s, t], M2):

M2 > 

Omega := evalDG([du - p*dx - q*dy, dp - r*dx - s*dy, dq - s*dx - t*dy]);

Ωpdxqdy+du,rdxsdy+dp,sdxtdy+dq

(3.4)
M2 > 

sigma := Transformation(N2, M2, [x = x, y = y, u = f(x, y), p = diff(f(x, y), x), q = diff(f(x, y), y), r = diff(f(x, y), x$2), s = diff(f(x, y), x, y), t = diff(f(x, y), y$2)]);

σx=x,y=y,u=fx,y,p=xfx,y,q=yfx,y,r=2x2fx,y,s=2yxfx,y,t=2y2fx,y

(3.5)
N2 > 

Pullback(sigma, Omega);

0dx,0dx,0dx

(3.6)

 

Example 3.  Find the integral 1-manifolds to the EDS Omega of the form [x = x, y = f(x), y1 = g(x), y2 = h(x), y3 = k(x)].

N2 > 

ChangeFrame(M1):

M1 > 

Omega := evalDG([dy - y1*dx, dy1 - y2*dx, dy2 - y3*dx, dy3 - y*dx]);

Ωy1dx+dy,y2dx+dy1,y3dx+dy2,ydx+dy3

(3.7)
M1 > 

sigma := Transformation(N1, M1, [x = x, y = f(x), y1 = g(x), y2 = h(x), y3 = k(x)]);

σx=x,y=fx,y1=gx,y2=hx,y3=kx

(3.8)

 

Pullback the forms in the list Omega using sigma.  Extract the coefficients of the resulting forms to obtain a system of 1st order ODEs.

N1 > 

Theta := Pullback(sigma, Omega);

Θⅆⅆxfxgxdx,ⅆⅆxgxhxdx,ⅆⅆxhxkxdx,ⅆⅆxkxfxdx

(3.9)
N1 > 

DE := map(op, map(Tools:-DGinfo, Theta, "CoefficientSet"));

DEⅆⅆxfxgx,ⅆⅆxgxhx,ⅆⅆxhxkx,ⅆⅆxkxfx

(3.10)

 

Use dsolve to solve these ODEs.

N1 > 

Soln := dsolve(DE);

Solnkx=_C1ⅇx+_C2ⅇx+_C3sinx+_C4cosx,hx=_C1ⅇx+_C2ⅇx_C3cosx+_C4sinx,gx=_C1ⅇx+_C2ⅇx_C3sinx_C4cosx,fx=_C1ⅇx+_C2ⅇx+_C3cosx_C4sinx

(3.11)

 

Substitute back into the original transformation sigma.

N1 > 

Sigma := eval(sigma, Soln);

Σx=x,y=_C1ⅇx+_C2ⅇx+_C3cosx_C4sinx,y1=_C1ⅇx+_C2ⅇx_C3sinx_C4cosx,y2=_C1ⅇx+_C2ⅇx_C3cosx+_C4sinx,y3=_C1ⅇx+_C2ⅇx+_C3sinx+_C4cosx

(3.12)

 

Check that Sigma annihilates all the forms in the EDS Omega.

N1 > 

Pullback(Sigma, Omega);

0dx,0dx,0dx,0dx

(3.13)

 

Example 4.  Find the integral 2-manifolds to the EDS Omega of the form [x = x, y = y, u = f(x, y), p = g(x, y), q = h(x, y)].

N1 > 

DGsetup([x, y], N2):

N2 > 

DGsetup([x, y, u, ux, uy], M2):

M2 > 

Omega := evalDG([du - ux*dx - uy*dy, dux &w dx, duy &w dy]);

Ωuxdxuydy+du,dx`^`dux,dy`^`duy

(3.14)
M2 > 

sigma := Transformation(N2, M2, [x = x, y = y, u = f(x, y), ux = g(x, y), uy = h(x, y)]);

σx=x,y=y,u=fx,y,ux=gx,y,uy=hx,y

(3.15)

 

Pullback the forms in the list Omega using sigma.  Extract the coefficients of the resulting forms to obtain a system of 1st order PDEs.

N2 > 

Theta := Pullback(sigma, Omega);

Θxfx,ygx,ydx+yfx,yhx,ydy,ygx,ydx`^`dy,xhx,ydx`^`dy

(3.16)
N2 > 

DE := map(op, map(Tools:-DGinfo, Theta, "CoefficientSet"));

DExfx,ygx,y,yfx,yhx,y,ygx,y,xhx,y

(3.17)

 

Use pdsolve to integrate this system of PDEs.

N2 > 

Soln := pdsolve(DE);

Solnfx,y=∫_F2yⅆy+∫_F1xⅆx+_C1,hx,y=_F2y,gx,y=_F1x

(3.18)

 

Integration

 

The command IntegrateForm provides a simple means for integrating differential forms.  Here are a few examples.

 

[i]  Line Integrals.  Compute the line integral of the 1-form omega1 along the curve C from t = 0 to t = 2*Pi.

N2 > 

with(DifferentialGeometry):

N2 > 

DGsetup([t], R1):

R1 > 

DGsetup([x, y, z], R3):

 

Define the 1-form omega1.

R3 > 

omega1 := evalDG(x^2*dx - z^2*dy + y^2*dz);

ω1x2dxz2dy+y2dz

(4.1)

 

Define the curve C in R3 as a transformation from R1 to R3.

R3 > 

C := Transformation(R1, R3, [ x = sin(t), y = t  ,z = cos(t)]);

Cx=sint,y=t,z=cost

(4.2)

 

Pull the 1-form back using the curve C and integrate the resulting form on R1 from t = 0 to t = 2*Pi.

R1 > 

eta1 := Pullback(C, omega1);

η1t2sintcost2+costcost3dt

(4.3)
R1 > 

IntegrateForm(eta1, t = 0.. 2*Pi);

4π2π

(4.4)

 

[ii]  Surface Integrals.  Compute the surface integral of the 2-form omega2 over the surface z = x^2 + y^2, where 1 < x^2 + y^2 <= 4.

R1 > 

omega2 := evalDG(x^2*z*dx &w dy - z^3*dx &w dz);

&omega;2x2zdx`^`dyz3dx`^`dz

(4.5)

 

We use polar coordinates to parameterize the surface.  (theta was previously defined, so we need to unassign it here.)

R3 > 

theta := 'theta';

&theta;&theta;

(4.6)
R3 > 

DGsetup([r, theta], R2):

R2 > 

S := Transformation(R2, R3, [x = r*cos(theta), y = r*sin(theta), z = r^2]);

Sx&equals;rcos&theta;&comma;y&equals;rsin&theta;&comma;z&equals;r2

(4.7)
R2 > 

eta2 := Pullback(S, omega2);

&eta;2r52r3sin&theta;cos&theta;2dr`^`dtheta

(4.8)
R2 > 

IntegrateForm(eta2, r = 1 .. 2, theta = 0 .. 2*Pi);

21&pi;2

(4.9)

 

[iii]  Volume Integral.  Compute the integral of the 3-form omega3 over the region x + y + z + w = 1, x, y, z, w > =0.

R2 > 

DGsetup([x, y, z, w], R4):

R4 > 

DGsetup([r, s, t], N):

N > 

omega3 := (x*y)/(1 + z)*evalDG(dx &w dy &w dz - dy &w dz &w dw);

&omega;3xydx`^`dy`^`dzdy`^`dz`^`dw1&plus;z

(4.10)

 

The transformation phi parameterizes the region of integration.

R4 > 

phi := Transformation(N, R4, [x = r, y = s, z = t, w = 1 - r - s - t]);

&phi;x&equals;r&comma;y&equals;s&comma;z&equals;t&comma;w&equals;1rst

(4.11)

 

Pullback omega3 by phi and integrate the result.

N > 

eta3 := Pullback(phi, omega3);

&eta;32rsdr`^`ds`^`dt1&plus;t

(4.12)
N > 

IntegrateForm(eta3, r = 0 .. 1, s = 0 .. r, t = 0 .. r + s);

254898ln3&plus;43ln2

(4.13)

 

Stokes Theorem

 

Let M be an n-dimensional manifold with boundary N and let omega be an (n-1)-form.  Stokes Theorem states that

int_N omega = int_M (d(omega))   (*)

Let us check this formula, where M is the (solid) ball of radius 1 centered at the origin, N is the unit 2-sphere and omega is the 2-form defined below.  We shall use spherical coordinates to evaluate the integrals.

N > 

restart: with(DifferentialGeometry):

DGsetup([x, y, z], R3):

R3 > 

DGsetup([rho, theta, phi], B3):

B3 > 

DGsetup([theta, phi], S2):

S2 > 

omega := evalDG(-(x^2 + y^2)*z*dx &w dy - (y^2 + z^2)*x*dx &w dz + x^2*y^2*z^2*dy &w dz);

&omega;x2&plus;y2zdx`^`dyy2&plus;z2xdx`^`dz&plus;x2y2z2dy`^`dz

(5.1)

 

The transformation F parameterizes the boundary N of the ball.

R3 > 

F := Transformation(S2, R3, [x = cos(theta)*sin(phi), y = sin(theta)*sin(phi), z = cos(phi)]);

Fx&equals;cos&theta;sin&phi;&comma;y&equals;sin&theta;sin&phi;&comma;z&equals;cos&phi;

(5.2)

 

The transformation G will be used to integrate omega over the ball M.

S2 > 

G := Transformation(B3, R3, [x = rho*cos(theta)*sin(phi), y = rho*sin(theta)*sin(phi), z = rho*cos(phi)]);

Gx&equals;&rho;cos&theta;sin&phi;&comma;y&equals;&rho;sin&theta;sin&phi;&comma;z&equals;&rho;cos&phi;

(5.3)
B3 > 

omega1 := Pullback(F, omega);

&omega;1sin&phi;3cos&theta;3sin&phi;cos&phi;2cos&theta;3sin&phi;cos&phi;4cos&theta;5sin&phi;cos&phi;2&plus;cos&theta;5sin&phi;cos&phi;4&plus;cos&theta;sin&theta;cos&theta;3sin&theta;&plus;cos&theta;3sin&theta;cos&phi;2cos&phi;2dtheta`^`dphi

(5.4)

 

Calculate the left hand side of Stokes' formula.

S2 > 

StokesLHS := IntegrateForm(omega1, theta = 0 .. 2*Pi, phi = 0..Pi);

StokesLHS8&pi;15

(5.5)

 

Calculate the exterior derivative of omega and integrate over the ball M to obtain the right hand side of Stokes' formula.

S2 > 

omega2 := Pullback(G, ExteriorDerivative(omega));

&omega;2sin&phi;32&rho;3cos&theta;sin&phi;cos&phi;2&plus;2&rho;3cos&theta;3sin&phi;cos&phi;22cos&theta;sin&theta;&plus;1&rho;4drho`^`dtheta`^`dphi

(5.6)
B3 > 

StokesRHS := IntegrateForm(omega2, rho = 0 .. 1, theta = 0 .. 2*Pi, phi = 0 .. Pi);

StokesRHS8&pi;15

(5.7)

 

The homotopy operator for the de Rham complex -- the cylinder construction.

 

There is a very general approach to the construction of homotopy operators for the exterior derivative base on the "cylinder construction" discussed, for example, in Boothby pages 277--278 (the I operator, Definition 7.10), Flanders pages 27--28 (the K operator) and Spivak  (Volume I) pages 304 --305 (the I operator).

 

Given a manifold M, let  N = [0, 1] x M  and let i_t : M  -->  N  be the map   i_t(p)  = [t, p].  Then there is a homotopy operator I mapping  (p + 1)-forms theta on N  to p-forms on M and such that

 

i_1^*(theta) -  i_0(theta) = I(d(theta)) + d(I(theta)).        (*)

 

To apply this operator in Maple, we use the DeRhamHomotopy command with the option cylindervariable = var, where var is the cylinder coordinate (t) on the manifold N.

 

The standard application of this homotopy operator is as follows.  Let f, g : M -> M be two smoothly homotopic maps.  This implies that there is a map F : [0, 1] x M -> M such that f = F(t = 0) and g = F(t = 1).  If omega is any closed form on M then, with theta = F^*(omega),  the formula (*) shows that  g^*(omega) - f^*(omega) is exact.

 

Example.  Consider the case where M = {(x, y, z) such that x^2 + y^2 <> 0} and F(t, x, y, z) = (x, y, t*z).  Formula (*) shows that if omega is a closed 1-form on M, then there is a closed form omega1 on the xy-plane and a globally defined function eta on M such that

omega = omega1 + d(eta).

B3 > 

with(DifferentialGeometry):

B3 > 

DGsetup([x, y, z], M):

M > 

DGsetup([t, x, y, z], N):

N > 

ChangeFrame(M):

 

Define a form omega on M and check that it is closed.

M > 

omega := evalDG((-2*x*z^2+y*x^2+y^3+y^4+2*y^2*x^2+x^4)*dx/(x^2+y^2)^2-(2*z^2*y+x^3+x*y^2)*dy/(x^2+y^2)^2+2*z*dz/(x^2+y^2));

&omega;:=2xz2&plus;yx2&plus;y3&plus;y4&plus;2y2x2&plus;x4dxx2&plus;y222z2y&plus;x3&plus;xy2dyx2&plus;y22&plus;2zdzx2&plus;y2

(6.1)
M > 

ExteriorDerivative(omega);

0dxdy

(6.2)

 

Define the transformation F.

M > 

F := Transformation(N, M, [x = x, y = y, z = t*z]);

F:=x&equals;x&comma;y&equals;y&comma;z&equals;tz

(6.3)

Note that at  t = 1,  F  is the identity transformation g  on  M and at  t = 0,  F  is the projection map  f  to the puncture xy-plane R^2-{0}. Define the map  f  and the map   i_0.

N > 

f := Transformation(N, M, [x = x, y = y, z = 0]);

f:=x&equals;x&comma;y&equals;y&comma;z&equals;0

(6.4)
N > 

i_0 := Transformation(M, N, [x = x, y = y, z = z, t = 0]);

i_0:=t&equals;0&comma;x&equals;x&comma;y&equals;y&comma;z&equals;z

(6.5)
M > 

omega0 := Pullback(i_0, Pullback(f, omega));

&omega;0:=y&plus;x2&plus;y2dxx2&plus;y2xdyx2&plus;y2

(6.6)

 

Pullback omega by F and apply the DeRhamHomotopy operator to the result.

M > 

omega_t := Pullback(F, omega);

omega_t:=2tz2dtx2&plus;y22xt2z2yx2y3y42y2x2x4dxx2&plus;y222t2z2y&plus;x3&plus;xy2dyx2&plus;y22&plus;2t2zdzx2&plus;y2

(6.7)
N > 

eta := DeRhamHomotopy(omega_t, cylinderconstruction = t);

&eta;:=z2x2&plus;y2

(6.8)
M > 

ChangeFrame(M);

N

(6.9)

 

We have succeeded in writing omega as the sum of a form in the xy-plane and an exact form on M.

M > 

omega &minus (omega0 &plus ExteriorDerivative(eta));

0dx

(6.10)

 

Exercises

Exercise 1

 

Calculate the pullback of the form alpha with respect to the map phi.

 

M > 

with(DifferentialGeometry):

M > 

DGsetup([x, y, z], M):

M > 

DGsetup([u, v], N):

 

[i]

N > 

phi1 := Transformation(M, N, [u = x/z, v = y/z]);

&phi;1u&equals;xz&comma;v&equals;yz

(7.1.1)
M > 

alpha1 := u^2 + v^2;

&alpha;1u2&plus;v2

(7.1.2)

 

[ii]

M > 

phi2 := Transformation(M, N, [u = 3, v = 4]);

&phi;2u&equals;3&comma;v&equals;4

(7.1.3)
M > 

alpha2 := evalDG(du - dv);

&alpha;2dudv

(7.1.4)

 

[iii]

N > 

phi3 := Transformation(M, N, [u = x^2, v = y^2]);

&phi;3u&equals;x2&comma;v&equals;y2

(7.1.5)
M > 

alpha3 := evalDG(du - dv);

&alpha;3dudv

(7.1.6)

 

Solution

 

Part [i]

N > 

Pullback(phi1, alpha1);

x2z2&plus;y2z2

(7.1.1.1)

 

Part [ii]

M > 

Pullback(phi2, alpha2);

0dx

(7.1.1.2)

 

Part [iii]

M > 

Pullback(phi3, alpha3);

2xdx2ydy

(7.1.1.3)

Exercise 2

 

Use the Pullback command to calculate the Jacobian determinant of the transformation from Cartesian to spherical coordinates.

 

Solution

 

The Jacobian determinant can be calculated as the coefficient of the pullback of the standard volume form in Cartesian coordinates.

M > 

restart: with(DifferentialGeometry):

DGsetup([x, y, z], "cart"):

cart > 

DGsetup([rho, phi, theta], "spher"):

 

Define the coordinate transformation from spherical to Cartesian coordinates.

spher > 

T := Transformation("spher", "cart", [x = rho*cos(theta)*sin(phi), y = rho*sin(theta)*sin(phi), z = rho*cos(phi)]);

Tx&equals;&rho;cos&theta;sin&phi;&comma;y&equals;&rho;sin&theta;sin&phi;&comma;z&equals;&rho;cos&phi;

(7.2.1.1)

 

Define the standard volume form in Cartesian coordinates with the DGvolume command.

spher > 

nu1 := Tools:-DGvolume("form", 1, "cart");

&nu;1dx`^`dy`^`dz

(7.2.1.2)
cart > 

nu2 := Pullback(T, nu1);

&nu;2&rho;2sin&phi;drho`^`dphi`^`dtheta

(7.2.1.3)

 

Use DGinfo to obtain the coefficient of nu2.

spher > 

Tools:-DGinfo(nu2, "CoefficientSet")[1];

&rho;2sin&phi;

(7.2.1.4)

Exercise 3

 

A mapping phi : M -> N is a local submersion if phi_* is a surjective linear map, or, equivalently, if phi^* is injective.

Determine those points at which the following map phi fails to be submersion.

 

spher > 

restart: with(DifferentialGeometry):

DGsetup([x, y, z, w], M):

M > 

DGsetup([u, v], N):

N > 

phi := Transformation(M, N, [u = x*y + z*w, v = x*z + y*w]);

&phi;u&equals;xy&plus;zw&comma;v&equals;xz&plus;yw

(7.3.1)

 

Solution

 

If phi^* is injective, then linearly independent forms pullback to linearly independent forms.  So phi fails to be a local submersion precisely at the points where phi^*(du &w dv) vanishes.

M > 

omega := Pullback(phi, du &w dv);

&omega;xz&plus;ywdx`^`dy&plus;zw&plus;xydx`^`dz&plus;z2&plus;y2dx`^`dw&plus;w2&plus;x2dy`^`dz&plus;zw&plus;xydy`^`dw&plus;xz&plus;ywdz`^`dw

(7.3.1.1)

 

Set the coefficients of omega to zero and solve the resulting set of equations.

M > 

Eq := Tools:-DGinfo(omega, "CoefficientSet");

Eqzw&plus;xy&comma;z2&plus;y2&comma;w2&plus;x2&comma;xz&plus;yw

(7.3.1.2)
M > 

solve(Eq, {x, u, z, w});

w&equals;w&comma;u&equals;u&comma;x&equals;w&comma;z&equals;y&comma;w&equals;w&comma;u&equals;u&comma;x&equals;w&comma;z&equals;y

(7.3.1.3)

 

The map phi fails to be a submersion on a transverse pair of 2-planes.

Exercise 4

 

M > 

restart: with(DifferentialGeometry):

 

[i]  Show that the map Sigma1 defines an integral manifold for the EDS Omega1 (from Bryant, Chern et al.  Exterior Differential Systems, page 53).

 

DGsetup([phi], N):

N > 

DGsetup([x, y, z, phi], M):

M > 

Omega1 := evalDG([dy - sin(phi)*dx, dz - cos(phi)*dx]);

&Omega;1sin&phi;dx&plus;dy&comma;cos&phi;dx&plus;dz

(7.4.1)
M > 

Sigma1 := Transformation(N, M, [x = diff(f(phi), phi$2) + f(phi), y = sin(phi)*diff(f(phi), phi$2) - cos(phi)*diff(f(phi), phi), z = cos(phi)*diff(f(phi), phi$2) + sin(phi)*diff(f(phi), phi), phi = phi]);

&Sigma;1x&equals;&DifferentialD;2&DifferentialD;&phi;2f&phi;&plus;f&phi;&comma;y&equals;sin&phi;&DifferentialD;2&DifferentialD;&phi;2f&phi;cos&phi;&DifferentialD;&DifferentialD;&phi;f&phi;&comma;z&equals;cos&phi;&DifferentialD;2&DifferentialD;&phi;2f&phi;&plus;sin&phi;&DifferentialD;&DifferentialD;&phi;f&phi;&comma;&phi;&equals;&phi;

(7.4.2)

 

[ii]  Find the integral manifolds for the EDS Omega2, assuming that u, v and q are functions of x and y.

 

N > 

DGsetup([x, y], N):

N > 

DGsetup([x, y, u, v, q], M):

M > 

Omega2 := evalDG([du - q*dy, dv + q*dx]);

&Omega;2qdy&plus;du&comma;qdx&plus;dv

(7.4.3)

 

Solution

 

Part [i]  Simply pullback the differential forms in Omega1 by Sigma1 and check that the results are zero forms.

M > 

Pullback(Sigma1, Omega1);

0dx&comma;0dx

(7.4.1.1)

 

Part [ii]  Define a transformation Sigma2 from N to M with the coordinates u ,v, and w as arbitrary functions of x and y.

N > 

Sigma2 := Transformation(N, M, [x = x, y = y, u = f(x, y), v = g(x, y), q = h(x, y)]);

&Sigma;2x&equals;x&comma;y&equals;y&comma;u&equals;fx&comma;y&comma;v&equals;gx&comma;y&comma;q&equals;hx&comma;y

(7.4.1.2)

 

Pullback the forms in Omega2 by Sigma2 and extract the coefficients of the results.

N > 

Theta := Pullback(Sigma2, Omega2);

&Theta;xfx&comma;ydx&plus;yfx&comma;yhx&comma;ydy&comma;xgx&comma;y&plus;hx&comma;ydx&plus;ygx&comma;ydy

(7.4.1.3)
N > 

Eq := map(op, map(Tools:-DGinfo, Theta, "CoefficientSet"));

Eqxfx&comma;y&comma;yfx&comma;yhx&comma;y&comma;ygx&comma;y&comma;xgx&comma;y&plus;hx&comma;y

(7.4.1.4)

 

Use pdsolve to solve the pde in the list Eq.

N > 

Soln := pdsolve(Eq, {f, g, h});

Solnfx&comma;y&equals;_C1y&plus;_C2&comma;gx&comma;y&equals;_C1x&plus;_C3&comma;hx&comma;y&equals;_C1

(7.4.1.5)

 

Back substitute this solution into Sigma2.  Check that Sigma3 is an integral manifold.

N > 

Sigma3 := eval(Sigma2, Soln);

&Sigma;3x&equals;x&comma;y&equals;y&comma;u&equals;_C1y&plus;_C2&comma;v&equals;_C1x&plus;_C3&comma;q&equals;_C1

(7.4.1.6)
N > 

Pullback(Sigma3, Omega2);

0dx&comma;0dx

(7.4.1.7)

Exercise 5

 

Write a program to verify, by example, the following properties of the pullback map:

[i]  phi^*(alpha)(X_p, Y_p) = alpha(phi_*(X_p), phi_*(Y_p)), where alpha is a 2-form.

[ii]  phi^*(alpha &w beta) = phi^*(alpha) &w phi^*(beta)

[iii]  phi^(d(alpha)) = d(phi^*(alpha))

 

Use the following data to test your programs.

 

N > 

restart: with(DifferentialGeometry):

DGsetup([x, y, z], M):

M > 

DGsetup([u, v, w], N):

N > 

alpha1 := evalDG(w*du &w dv + u*v*dv &w dw);

&alpha;1wdu`^`dv&plus;uvdv`^`dw

(7.5.1)
N > 

alpha2 := evalDG(u*dv - v^2*dw);

&alpha;2udvv2dw

(7.5.2)
N > 

alpha3 := evalDG(u*v*du - w^2*dv);

&alpha;3uvduw2dv

(7.5.3)
N > 

phi := Transformation(M, N, [u = x/y, v = y/z, w = x*y/z]);

&phi;u&equals;xy&comma;v&equals;yz&comma;w&equals;xyz

(7.5.4)
M > 

X := y*D_x + z*D_y - x^2*D_z;

XyD_x&plus;zD_yx2D_z

(7.5.5)
M > 

Y := evalDG(z*y*D_x + y*D_y + x^2*D_z);

YzyD_x&plus;yD_y&plus;x2D_z

(7.5.6)
M > 

pt1 := [x = 1, y = 2, z = 3];

pt1x&equals;1&comma;y&equals;2&comma;z&equals;3

(7.5.7)
M > 

pt2 := [x = 3, y = 1, z = -2];

pt2x&equals;3&comma;y&equals;1&comma;z&equals;2

(7.5.8)

 

Solution

 

Part [i]

N > 

PullbackDefinition := proc(phi, alpha, X, Y, pt)

N > 

local a, a1, a2, a3, a4, b, b1, b2, b3, b4, c;

N > 

a1 := Pullback(phi, alpha);

N > 

a2 := eval(a1, pt);

N > 

a3 := eval(X, pt);

N > 

a4 := eval(Y, pt);

N > 

a := Hook([a3, a4], a2);

N > 

b1 := Pushforward(phi, a3, pt);

N > 

b2 := Pushforward(phi, a4, pt);

N > 

b3 := ApplyTransformation(phi, pt);

N > 

b4 := eval(alpha, b3);

N > 

b := Hook([b1, b2], b4);

N > 

a - b

M > 

end:

M > 

 

M > 

PullbackDefinition(phi, alpha1, X, Y, pt1);

0

(7.5.1.1)
N > 

PullbackDefinition(phi, alpha1, X, Y, pt2);

0

(7.5.1.2)

 

Part [ii]

N > 

PullbackHomomorphism := proc(phi, alpha, beta)

N > 

local a1, a, b1, b2, b;

N > 

a1 := alpha &wedge beta;

N > 

a := Pullback(phi, a1):

N > 

b1 := Pullback(phi, alpha);

N > 

b2 := Pullback(phi, beta);

N > 

b := b1 &wedge b2;

N > 

a &minus b;

N > 

end:

N > 

 

N > 

PullbackHomomorphism(phi, alpha1, alpha2);

0dx`^`dy`^`dz

(7.5.1.3)
M > 

PullbackHomomorphism(phi, alpha2, alpha3);

0dx`^`dy

(7.5.1.4)

 

Part [iii]

N > 

PullbackExteriorDerivative := proc(phi, alpha)

N > 

local a1, a, b1 ,b;

N > 

a1 := ExteriorDerivative(alpha);

N > 

a := Pullback(phi, a1);

N > 

b1 := Pullback(phi, alpha);

N > 

b := ExteriorDerivative(b1);

N > 

a &minus b;

M > 

end:

 

M > 

PullbackExteriorDerivative(phi, alpha1);

0dx`^`dy`^`dz

(7.5.1.5)
M > 

PullbackExteriorDerivative(phi, alpha2);

0dx`^`dy

(7.5.1.6)

Exercise 6

 

Use the Pullback command to calculate the Maurer-Cartan forms for the matrix group defined by the matrix A.  (See Lesson 5 and Lesson 7 Ex. 7.)

 

M > 

with(DifferentialGeometry):

M > 

DGsetup([x1, x2, x3], G):

M > 

A := Matrix([[exp(-x1), -x1*exp(-x1), x2], [0, exp(-x1), x3], [0, 0, 1]]);

A&ExponentialE;x1x1&ExponentialE;x1x20&ExponentialE;x1x3001

(7.6.1)

 

Solution

 

We build upon the techniques used in Lesson 7 Ex. 7.  If L_a(x) = a*x denotes the left-multiplication map, then a form omega is left invariant if (L_a)*(omega(a*x)) = omega(x).  In this equation, replace x by a and a by a^(-1) to get omega(a) = L_(a^-1) (omega(e)) -- this formula gives omega(a) in terms of the value of omega(e).

 

Recall that the group multiplication is given by

G > 

MultiplicationRule := [z3 = (y3 + x3*exp(x1))/exp(x1), z2 = (y2 - x1*y3 + x2*exp(x1))/exp(x1), z1 = x1 + y1];

MultiplicationRulez3&equals;y3&plus;x3&ExponentialE;x1&ExponentialE;x1&comma;z2&equals;y2x1y3&plus;x2&ExponentialE;x1&ExponentialE;x1&comma;z1&equals;x1&plus;y1

(7.6.1.1)

 

The inverse of [x1, x2, x3] is given by

G > 

InverseRule := [y1 = -x1, y2 = -x1*x3*exp(x1) - x2*exp(x1), y3 = -x3*exp(x1)];

InverseRuley1&equals;x1&comma;y2&equals;x1x3&ExponentialE;x1x2&ExponentialE;x1&comma;y3&equals;x3&ExponentialE;x1

(7.6.1.2)

 

Here is the left multiplication map by the inverse of [a1, a2, a3].

G > 

multL := simplify(eval(eval(MultiplicationRule,[x1 = -a1, x2 = -a1*a3*ex(a1) -a2*exp(a1), x3 = -a3*exp(a1)]),[y1 = x1, y2 = x2, y3 = x3]));

multLz3&equals;x3&plus;a3&ExponentialE;a1&comma;z2&equals;x2a1x3&plus;&ExponentialE;a1a1a3exa1&plus;a2&ExponentialE;a1&comma;z1&equals;a1&plus;x1

(7.6.1.3)
G > 

LeftMultByInverse := Transformation(G, G, eval(multL, [z1 = x1, z2 = x2, z3 = x3]));

LeftMultByInversex1&equals;a1&plus;x1&comma;x2&equals;x2a1x3&plus;&ExponentialE;a1a1a3exa1&plus;a2&ExponentialE;a1&comma;x3&equals;x3&plus;a3&ExponentialE;a1

(7.6.1.4)

 

Here are the left invariant 1-forms at [a1, a2, a3].

G > 

OmegaLatA := eval(Pullback(LeftMultByInverse, [dx1, dx2, dx3]), [x1 = 0, x2 = 0, x3 = 0]);

OmegaLatAdx1&comma;&ExponentialE;a1dx2&plus;a1&ExponentialE;a1dx3&comma;&ExponentialE;a1dx3

(7.6.1.5)

 

Here are the left invariant 1-forms at [x1, x2, x3].

G > 

OmegaL := eval(OmegaLatA, [a1 = x1, a2 = x2, a3 = x3]);

OmegaLdx1&comma;&ExponentialE;x1dx2&plus;x1&ExponentialE;x1dx3&comma;&ExponentialE;x1dx3

(7.6.1.6)

 

These are the same forms as those found in Exercise 5.  The method in this exercise can be used when the Lie group is not given as a matrix group.

 

Now we calculate the right invariant forms.

G > 

multR := simplify(eval(MultiplicationRule, [y1 = -a1, y2 = -a1*a3*exp(a1) - a2*exp(a1), y3 = -a3*exp(a1)]));

multRz3&equals;a3&ExponentialE;a1x3&ExponentialE;x1&ExponentialE;x1&comma;z2&equals;a1a3&ExponentialE;a1&plus;a2&ExponentialE;a1x1a3&ExponentialE;a1x2&ExponentialE;x1&ExponentialE;x1&comma;z1&equals;a1&plus;x1

(7.6.1.7)
G > 

RightMultByInverse := Transformation(G, G, eval(multR, [z1 = x1, z2 = x2, z3 = x3]));

RightMultByInversex1&equals;a1&plus;x1&comma;x2&equals;a1a3&ExponentialE;a1&plus;a2&ExponentialE;a1x1a3&ExponentialE;a1x2&ExponentialE;x1&ExponentialE;x1&comma;x3&equals;a3&ExponentialE;a1x3&ExponentialE;x1&ExponentialE;x1

(7.6.1.8)
G > 

OmegaRatA := eval(Pullback(RightMultByInverse, [dx1, dx2, dx3]), [x1 = 0, x2 = 0, x3 = 0]);

OmegaRatAdx1&comma;&ExponentialE;a1a3&plus;a1a3&plus;a2dx1&plus;dx2&comma;a3&ExponentialE;a1dx1&plus;dx3

(7.6.1.9)
G > 

OmegaR := eval(OmegaRatA, [a1 = x1, a2 = x2, a3 = x3]);

OmegaRdx1&comma;&ExponentialE;x1x3&plus;x1x3&plus;x2dx1&plus;dx2&comma;x3&ExponentialE;x1dx1&plus;dx3

(7.6.1.10)

Exercise 7

 

G > 

restart: with(DifferentialGeometry):

DGsetup([x,y,z,w], R4):

 

[i]  Compute the line integral of the 1-form omega1 along the curve C defined by y = x^2 - x, z = x^3 - x^2 + x, w = x^4 - x^3 + x^2 - x from x = -1 ... 1.

 

R4 > 

omega1 := evalDG(z*x*dx + x*w*dy + y*w*dz + x*y*dw);

&omega;1zxdx&plus;xwdy&plus;ywdz&plus;xydw

(7.7.1)

 

[ii]  Compute the surface integral of the 2-form omega2 over the torus T in R4 defined by x^2 + y ^2 = 1, z^2 + w^2 = 1.

 

R4 > 

omega2 := evalDG(z^2*dx &w dy + w^2*dx &w dz + y^2*dx &w dw + w^2*dy &w dz + x*z*dy &w dw + y*z*dz &w dw);

&omega;2z2dx`^`dy&plus;w2dx`^`dz&plus;y2dx`^`dw&plus;w2dy`^`dz&plus;zxdy`^`dw&plus;yzdz`^`dw

(7.7.2)

 

[iii]  Compute the triple integral of the 3-form omega3 over the 3 dimensional sphere x^2 + y^2 + z^2 + w^2 = 1. Note that omega3 is closed.

 

R4 > 

omega3 := evalDG(z*dx &w dy &w dw);

&omega;3zdx`^`dy`^`dw

(7.7.3)
R4 > 

ExteriorDerivative(omega3);

dx`^`dy`^`dz`^`dw

(7.7.4)

 

Solution

 

Part [i]  Parameterize the curve C with the coordinate x, pullback omega1 and integrate with respect to x from -1 to 1.

R4 > 

DGsetup([x], N):

N > 

C := Transformation(N, R4, [x = x, y = x^2 - x, z = x^3 - x^2 + x, w = x^4 - x^3 + x^2 - x]);

Cx&equals;x&comma;y&equals;x2x&comma;z&equals;x3x2&plus;x&comma;w&equals;x4x3&plus;x2x

(7.7.1.1)
N > 

eta := Pullback(C, omega1);

&eta;17x622x5&plus;18x411x3&plus;4x2&plus;3x88x7dx

(7.7.1.2)
N > 

IntegrateForm(eta, x = -1 .. 1);

1616105

(7.7.1.3)

 

Part [ii]  Parameterize the torus T with the angular coordinates theta and phi, then pullback omega2 and integrate.

N > 

DGsetup([theta, phi], N):

N > 

S := Transformation(N, R4, [x = sin(theta), y = cos(theta), z = cos(phi), w = sin(phi)]);

Sx&equals;sin&theta;&comma;y&equals;cos&theta;&comma;z&equals;cos&phi;&comma;w&equals;sin&phi;

(7.7.1.4)
N > 

eta := Pullback(S, omega2);

&eta;cos&phi;2&plus;cos&phi;2cos&theta;2&plus;sin&phi;sin&theta;sin&phi;sin&theta;cos&phi;2&plus;cos&theta;3cos&phi;cos&theta;sin&phi;&plus;cos&theta;sin&phi;cos&phi;2dtheta`^`dphi

(7.7.1.5)
N > 

IntegrateForm(eta, theta = 0 .. 2*Pi, phi = 0 .. 2*Pi);

&pi;2

(7.7.1.6)

 

Part [iii]  By Stokes Theorem the value of the integral is 0.  We check this by a direct computation.

N > 

DGsetup([theta1, theta2, theta3], N):

N > 

V := Transformation(N, R4, [x = cos(theta1)*sin(theta2)*sin(theta3), y = sin(theta1)*sin(theta2)*sin(theta3), z = cos(theta2)*sin(theta3), w = cos(theta3)]);

Vx&equals;cos&theta;1sin&theta;2sin&theta;3&comma;y&equals;sin&theta;1sin&theta;2sin&theta;3&comma;z&equals;cos&theta;2sin&theta;3&comma;w&equals;cos&theta;3

(7.7.1.7)
N > 

eta := Pullback(V, z*dx &w dy &w dw);

&eta;cos&theta;22sin&theta;34sin&theta;2dtheta1`^`dtheta2`^`dtheta3

(7.7.1.8)
N > 

IntegrateForm(eta, theta1 = 0 .. 2*Pi, theta2 = 0 .. 2*Pi, theta3 = 0 .. Pi);

0

(7.7.1.9)

Exercise 8

 

N > 

restart: with(DifferentialGeometry):

DGsetup([x, y, z], R3):

R3 > 

DGsetup([x, y, z, w], R4):

 

[i]  Use Stokes theorem to integrate the 2-form omega1 over the closed cylinder x^2 + y^2 = 1 with top z = 1 and bottom z = 0.

 

R4 > 

ChangeFrame(R3):

R3 > 

omega1 := evalDG((x + 2*z)*dx &w dy + (z - x + y) &w dx &w dz + (x + 3*z)*dy &w dz);

&omega;1x&plus;2zdx`^`dy&plus;zx&plus;ydx`^`dz&plus;x&plus;3zdy`^`dz

(7.8.1)

 

[ii]  Use Stokes theorem to integrate the 3-form omega2 over the surface of the unit cube in 4 dimensions.

 

R3 > 

ChangeFrame(R4):

R4 > 

omega2 := evalDG(w^2*dx &w dy &w dz - x^2*dy &w dz &w dw + z^2*dx &w dy &w dw + y^2*dx &w dz &w dw);

&omega;2w2dx`^`dy`^`dz&plus;z2dx`^`dy`^`dw&plus;y2dx`^`dz`^`dwx2dy`^`dz`^`dw

(7.8.2)

 

Solution

 

Part [i]  We use cylindrical coordinates to integrate over the solid cylinder.

R4 > 

DGsetup([r, theta, z], N3):

N3 > 

phi := Transformation(N3, R3, [x = r*cos(theta), y = r*sin(theta), z = z]);

&phi;x&equals;rcos&theta;&comma;y&equals;rsin&theta;&comma;z&equals;z

(7.8.1.1)
N3 > 

zeta := ExteriorDerivative(omega1);

&zeta;2dx`^`dy`^`dz

(7.8.1.2)

 

Convert to cylindrical coordinates.

R3 > 

eta := Pullback(phi, zeta);

&eta;2rdr`^`dtheta`^`dz

(7.8.1.3)
N3 > 

IntegrateForm(eta, r = 0 .. 1, theta = 0 .. 2*Pi, z = 0 .. 1);

2&pi;

(7.8.1.4)

 

Part [ii]  We integrate the exterior derivative of omega2 over the solid cube.

N3 > 

zeta := ExteriorDerivative(omega2);

&zeta;2x2y&plus;2z2wdx`^`dy`^`dz`^`dw

(7.8.1.5)
R4 > 

IntegrateForm(zeta, x = 0 .. 1, y = 0 .. 1, z = 0 .. 1, w = 0 .. 1);

2

(7.8.1.6)

Exercise 9

 

Show that all of the following 1-forms, defined on the punctured plane are closed but that, by the de Rham theorem, only three are exact.

Hint: Integrate the forms over the unit circle -- by Stokes theorem the answer is zero, if the form is exact, and the de Rham theorem implies that the converse is true.

 

R4 > 

DGsetup([x, y], M):

M > 

omega1 := 4*x^3/(y^4 + x^4)*dx + 4*y^3/(y^4 + x^4)*dy;

&omega;14x3dxy4&plus;x4&plus;4y3dyy4&plus;x4

(7.9.1)
M > 

omega2 := 2*x*y^2/(y^4 + x^4)*dx - 2*x^2*y/(y^4 + x^4)*dy;

&omega;22xy2dxy4&plus;x42x2ydyy4&plus;x4

(7.9.2)
M > 

omega3 := 3*x^2*y^3/(y^6 + x^6)*dx - 3*x^3*y^2/(y^6 + x^6)*dy;

&omega;33x2y3dxy6&plus;x63x3y2dyy6&plus;x6

(7.9.3)
M > 

omega4 := 2*x*y^4/(x^2 + y^2)^2*dx + 2*y*x^4/(x^2 + y^2)^2*dy;

&omega;42xy4dxx2&plus;y22&plus;2yx4dyx2&plus;y22

(7.9.4)

 

Solution

 

First, we check that the forms in the list Omega are all closed.

M > 

Omega := [omega1, omega2, omega3, omega4]:

M > 

ExteriorDerivative(Omega);

0dx`^`dy&comma;0dx`^`dy&comma;0dx`^`dy&comma;0dx`^`dy

(7.9.1.1)

 

Set up a parameterization of the unit circle.

M > 

DGsetup([t], N):

N > 

C := Transformation(N, M, [x = cos(t), y = sin(t)]);

Cx&equals;cost&comma;y&equals;sint

(7.9.1.2)

 

Integrate each of the forms in Omega around the unit circle.

N > 

Theta := Pullback(C, Omega);

&Theta;4sintcost2cost21dt2cost4&plus;12cost2&comma;2sintcostdt2cost4&plus;12cost2&comma;3sint2cost2dt13cost2&plus;3cost4&comma;2sintcost2cost21dt

(7.9.1.3)
N > 

map(IntegrateForm, Theta, t = 0 .. 2*Pi);

0&comma;0&comma;2&pi;&comma;0

(7.9.1.4)

 

The forms omega1, omega2, and omega4 are all exact -- in fact, we can write them as the exterior derivatives of globally defined functions using the DeRhamHomotopy command.

N > 

eta1 := DeRhamHomotopy(omega1, initialpoint = [x = 1, y = 0], path = "zigzag");

&eta;1lny4&plus;x4x4&plus;4lnxxx14lnxx1

(7.9.1.5)
M > 

simplify(eta1, symbolic);

lny4&plus;x4

(7.9.1.6)
M > 

eta2 := DeRhamHomotopy(omega2, initialpoint = [x = 1, y = 0], path = "zigzag");

&eta;2arctany2x2

(7.9.1.7)
M > 

eta4 := DeRhamHomotopy(omega4, integrallimits = [infinity, 1]);

&eta;4y2x2x2&plus;y2

(7.9.1.8)

 

It is a nice exercise to prove that the function eta2 is a smooth function, if we define its value to be Pi/2 at x = 0.

 

We check these results.

M > 

ExteriorDerivative(eta1) &minus omega1;

0dx

(7.9.1.9)
M > 

ExteriorDerivative(eta2) &minus omega2;

0dx

(7.9.1.10)
M > 

ExteriorDerivative(eta4) &minus omega4;

0dx

(7.9.1.11)