Lesson 5: ExteriorDerivative and deRham Homotopy - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Mathematics : DifferentialGeometry : Lessons and Tutorials : DifferentialGeometry : Lesson 5: ExteriorDerivative and deRham Homotopy

DifferentialGeometry Lessons

 

Lesson 5: The Exterior Derivative and the Homotopy Operator for the de Rham complex.

 

 

Overview

ExteriorDerivative

The formula of Cartan

Application 1: Integrable Pfaffian systems

Application 2: Maurer Cartan forms for matrix groups

The Homotopy Operator for the de Rham complex

Exercises

Overview

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

– 

Calculate the exterior derivative of a differential p-form or a matrix of p-forms.

– 

Check that a Pfaffian system of 1-forms is integrable.

– 

Calculate the Maurer Cartan forms for a matrix group.

– 

Apply the homotopy operator for the exterior derivative.

 

ExteriorDerivative

 

The defining properties and identities of the exterior derivative are described in detail in the ExteriorDerivative help page and also in Exercise 4.

with(DifferentialGeometry):

DGsetup([x, y, z, w], E3);

frame name: E3

(2.1)
E3 > 

vars := x, y, z, w:

E3 > 

PDEtools[declare](M(vars), N(vars), P(vars), Q(vars), quiet);

 

Example 1.  The exterior derivative of a function.

E3 > 

f := M(vars);

fM

(2.2)
E3 > 

ExteriorDerivative(f);

Mxdx+Mydy+Mzdz+Mwdw

(2.3)

 

Example 2.  The exterior derivative of a 1-form.

E3 > 

alpha1 := evalDG(M(vars)*dx + N(vars)*dy + P(vars)*dz + Q(vars)*dw);

α1Mdx+Ndy+Pdz+Qdw

(2.4)
E3 > 

ExteriorDerivative(alpha1);

NxMydx`^`dy+PxMzdx`^`dz+QxMwdx`^`dw+PyNzdy`^`dz+QyNwdy`^`dw+QzPwdz`^`dw

(2.5)

 

Example 3.  The exterior derivative of a 2-form.

E3 > 

alpha2 := evalDG(M(vars)*dx &w dy + N(vars)*dz &w dw);

α2Mdx`^`dy+Ndz`^`dw

(2.6)
E3 > 

ExteriorDerivative(alpha2);

Mzdx`^`dy`^`dz+Mwdx`^`dy`^`dw+Nxdx`^`dz`^`dw+Nydy`^`dz`^`dw

(2.7)

 

Example 4.  The exterior derivative of a 3-form.

alpha3 := evalDG(M(vars)*dy &w dz &w dw - N(vars)*dx &w dz &w dw + P(vars)*dx &w dy &w dw - Q(vars)*dx &w dy &w dz);

α3:=Qdx`^`dy`^`dz+Pdx`^`dy`^`dwNdx`^`dz`^`dw+Mdy`^`dz`^`dw

E3 > 

ExteriorDerivative(alpha3);

0dx

(2.8)

 

Example 5.  The ExteriorDerivative command may be applied directly to a Matrix of functions or differential forms.

E3 > 

A := Matrix([[x, y], [z, w]]):

E3 > 

Omega := ExteriorDerivative(A);

Ωdxdydzdw

(2.9)

 

The formula of Cartan

 

E3 > 

with(DifferentialGeometry):

 

One of the most important formulas in differential geometry is the Cartan formula relating the Lie derivative of a differential form to its exterior derivative:

 

LieDerivative(X, omega) = Hook(X, ExteriorDerivative(omega)) + ExteriorDerivative(Hook(X, omega))

 

Here we write a little program to check this identity.

E3 > 

LieDerivativeCartan := proc(X, omega)

E3 > 

local a, b1, b2, b, c, d;

E3 > 

a := LieDerivative(X, omega);

E3 > 

b1 := Hook(X, ExteriorDerivative(omega));

E3 > 

b2 := ExteriorDerivative(Hook(X,omega));

E3 > 

b := b1 &plus b2;

E3 > 

c := a &minus b;

E3 > 

d := Tools:-DGinfo(c, "CoefficientSet");

E3 > 

end:

 

Check the Cartan formula using the vector X and the differential forms alpha and beta.

E3 > 

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

M > 

X := evalDG(x^2*D_x - x*z*D_y + w*z*D_w);

Xx2D_xxzD_y+wzD_w

(3.1)
M > 

alpha := evalDG(z &mult dx &w dy);

αzdx`^`dy

(3.2)
M > 

beta := evalDG(y^2 *dy &w dz &w dw);

βy2dy`^`dz`^`dw

(3.3)
M > 

LieDerivativeCartan(X, alpha);

0

(3.4)
M > 

LieDerivativeCartan(X, beta);

0

(3.5)

 

Application 1: Integrable Pfaffian systems

 

A rank r Pfaffian system P is defined by a collection of r (independent) 1-forms.  The Pfaffian system is said to integrable if the exterior derivative of each form in P vanishes modulo the ideal of differential forms generated by P.

 

We check that a Pfaffian system is integrable by wedging the exterior derivative of each form in P against all the (independent) forms in P and checking that the result vanishes.

 

The invariants of a Pfaffian system P are functions whose exterior derivatives lie in P.  The Frobenius Theorem states that a rank r Pfaffian system always admits r functionally independent invariants.

 

The annihilating space of a rank r Pfaffian system P is a rank (n - r) distribution V (See Lesson 4).  A Pfaffian system P is integrable if and only if the annihilating distribution V is integrable.

 

M > 

with(DifferentialGeometry):

M > 

DGsetup([x, y, u, v], E4):

 

Here is a rank 2 Pfaffian system.

E4 > 

P := evalDG([(-y^2 + x^2)*dy + (-y*u - x*v)*du + (-y*v - x*u)*dv, (x*v + y*u)*dx + (y*v + x*u)*dy + (v^2 - u^2)*dv]);

Py2+x2dy+yuxvdu+yvxudv,xv+yudx+yv+xudy+v2u2dv

(4.1)

 

We check that P is integrable:

E4 > 

ExteriorDerivative(P[1]) &wedge P[1] &wedge P[2];

0dx`^`dy`^`du`^`dv

(4.2)
E4 > 

ExteriorDerivative(P[2]) &wedge P[1] &wedge P[2];

0dx`^`dy`^`du`^`dv

(4.3)

 

We check that the invariants for this system are f1 and f2 using GetComponents to prove that the exterior derivative of f1 and f2 are linear combinations of the 1-forms in P.

E4 > 

f1 := x*y - u*v;

f1xyuv

(4.4)
E4 > 

f2 := 1/2*(x^2 + y^2 + u^2 + v^2);

f2x22+y22+u22+v22

(4.5)
E4 > 

GetComponents(ExteriorDerivative(f1), P);

vxv+yu,yxv+yu

(4.6)
E4 > 

GetComponents(ExteriorDerivative(f2), P);

uxv+yu,xxv+yu

(4.7)

 

Application 2: Maurer Cartan forms for matrix groups

 

An r-parameter matrix group is defined by an n x n matrix A(x1, x2, ... xr), depending smoothly on parameters x1, x2, ...xr, if the set of matrices so generated is a group in the usual context:

– 

For each admissible parameter value x = (x1, x2, ... xr) and y = (y1, y2, ... yr), there is a parameter value z = (z1, z2, ... zr) such that A(x)A(y) = A(z).

– 

For some value x0, A(x0) = I, the n x n identity matrix.

– 

For each admissible parameter value x, there is a parameter value y such that A(y) = [A(x)]^(-1).

 

For any Lie group there always exists a coframe of left (or right) invariant 1-forms.  These are called the Maurer-Cartan forms for the Lie group.  For a matrix group defined by A(x1, x2, ...), the left invariant Maurer-Cartan forms can be computed from the formula OmegaL = A^(-1) dA and the right invariant Maurer-Cartan forms can be computed from OmegaR = dA A^(-1).  The Maurer-Cartan forms, Omega, for a matrix algebra always satisfy the structure equation d(Omega) - Omega^Omega = 0.

 

The vector fields dual to the forms, OmegaR, are right invariant and in fact are the infinitesimal generators for left multiplication on G.  The Lie derivative of the left invariant Maurer-Cartan forms with respect to the right invariant vector fields vanish.

 

In this section, we simply illustrate these facts with a simple example.

E4 > 

with(DifferentialGeometry):

E4 > 

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

frame name: G

(5.1)

 

Consider the following set of matrices:

G > 

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

Aⅇx1x1ⅇx1x20ⅇx1x3001

(5.2)

 

Let us first check that the matrix A does indeed define a 3-parameter matrix group.  First note that [x1 = 0, x2 = 0, x3 = 0] gives the identity matrix.  We next check closure under multiplication.  To do this, we define Matrices B(y) and C(z).

G > 

B := eval(A, [x1 = y1, x2 = y2, x3 = y3]); C := eval(A, [x1 = z1, x2 = z2, x3 = z3]);

Bⅇy1y1ⅇy1y20ⅇy1y3001

Cⅇz1z1ⅇz1z20ⅇz1z3001

(5.3)

 

Now find the scalar equations from the matrix equation A(x)B(y) = C(z).

G > 

eq1 := convert(A.B - C ,set);

eq10,ⅇx1y1ⅇy1x1ⅇx1ⅇy1+z1ⅇz1,ⅇx1ⅇy1ⅇz1,ⅇx1y2x1ⅇx1y3+x2z2,ⅇx1y3+x3z3

(5.4)

 

Solve these equations for the parameters {z1, z2, z3}.  The fact that the solution exists proves that the set of matrices A is closed under multiplication.  The solution gives the multiplication rule for this 3-dimensional matrix group.

G > 

MultiplicationRule := solve(eq1, {z1, z2, z3});

MultiplicationRulez3=y3+x3ⅇx1ⅇx1,z1=x1+y1,z2=y2+x1y3x2ⅇx1ⅇx1

(5.5)

 

Likewise to check closure under inversion, we find the scalar equations for the matrix equations A(x)^(-1) = B(y) and solve for y.  The fact that the solution exists proves that the set of matrices A is closed under inversion.

G > 

eq2 := convert(A^(-1)-B, set);

eq20,x3ⅇx1y3,1ⅇx1ⅇy1,x1ⅇx1+y1ⅇy1,x1x3+x2ⅇx1y2

(5.6)
G > 

InverseFormula := solve(eq2, {y1,y2,y3});

InverseFormulay2=x1x3ⅇx1x2ⅇx1,y1=x1,y3=x3ⅇx1

(5.7)

 

To multiply matrices of differential forms we use the MatrixMultiply command from the Tools package.

G > 

with(Tools):

G > 

dA := ExteriorDerivative(A);

dAⅇx1dx1ⅇx11+x1dx1dx20dx1ⅇx1dx1dx30dx10dx10dx1

(5.8)
G > 

OmegaL0 := (A^(-1)) &MatrixMult dA;

OmegaL0dx1dx1ⅇx1dx2+x1ⅇx1dx30dx1dx1ⅇx1dx30dx10dx10dx1

(5.9)
G > 

OmegaR0 := dA &MatrixMult (A^(-1));

OmegaR0dx1dx1x3+x2dx1+dx20dx1dx1x3dx1+dx30dx10dx10dx1

(5.10)

 

Verify the structure equation d(Omega) - Omega^Omega = 0 for the Maurer-Cartan forms in Matrix form.

G > 

ExteriorDerivative(OmegaL0) &MatrixPlus (OmegaL0 &MatrixWedge OmegaL0);

0dx1`^`dx20dx1`^`dx20dx1`^`dx20dx1`^`dx20dx1`^`dx20dx1`^`dx20dx1`^`dx20dx1`^`dx20dx1`^`dx2

(5.11)
G > 

ExteriorDerivative(OmegaR0) &MatrixMinus (OmegaR0 &MatrixWedge OmegaR0);

0dx1`^`dx20dx1`^`dx20dx1`^`dx20dx1`^`dx20dx1`^`dx20dx1`^`dx20dx1`^`dx20dx1`^`dx20dx1`^`dx2

(5.12)

 

Define a basis for the left invariant 1-forms. (We take 3 independent 1-forms from the entries of OmegaL0.)

Define a basis for the right invariant 1-forms.  (We take 3 independent 1-forms from the entries of OmegaR0.)

G > 

OmegaL := [(-1) &mult OmegaL0[1, 1], OmegaL0[1, 3], OmegaL0[2, 3]];

OmegaLdx1,ⅇx1dx2+x1ⅇx1dx3,ⅇx1dx3

(5.13)
G > 

OmegaR := [(-1) &mult OmegaR0[1, 1], OmegaR0[1, 3], OmegaR0[2, 3]];

OmegaRdx1,x3+x2dx1+dx2,x3dx1+dx3

(5.14)

 

Calculate the left invariant vector fields for the group as the dual vectors to the left invariant 1-forms.

G > 

XL := DualBasis(OmegaL);

XLD_x1,ⅇx1D_x2,x1ⅇx1D_x2+ⅇx1D_x3

(5.15)

 

Calculate the right invariant vector fields for the group as the dual vectors to the right invariant 1-forms.

G > 

XR := DualBasis(OmegaR);

XRD_x1+x3x2D_x2x3D_x3,D_x2,D_x3

(5.16)

 

The left invariant 1-forms are always invariant with respect to the right invariant vector fields.  Let's check this.

G > 

Matrix(3, 3, (i, j) -> LieDerivative(XR[i], OmegaL[j]));

0dx10dx10dx10dx10dx10dx10dx10dx10dx1

(5.17)

 

The right invariant 1-forms are always invariant with respect to the left invariant vector fields.

G > 

Matrix(3, 3, (i, j) -> LieDerivative(XL[i], OmegaR[j]));

0dx10dx10dx10dx10dx10dx10dx10dx10dx1

(5.18)

 

The left invariant 1-vector fields always commute with the right invariant vector fields.

G > 

Matrix(3, 3, (i, j) -> LieBracket(XL[i], XR[j]));

0D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x1

(5.19)

 

The Homotopy Operator for the de Rham complex

 

A differential p-form omega with vanishing exterior derivative, d(omega) = 0, is said to be a closed p-form.  A differential p-form omega which is the exterior derivative of some (p - 1) form eta, omega = d(eta), is said to be an exact p-form.  Since d^2 = 0, any exact p-form is closed.

 

For differential forms which are defined on a contractible region of R^n, the converse is true -- every closed p-form is exact.

 

The standard proof of this fact, at least for regions in R^n which are star-shaped with respect to a fixed point, relies on the explicit construction of a homotopy operator, that is, a mapping H from p-forms to (p - 1) forms for which the identity

 

omega = H(d(omega)) + d(H(omega))

 

holds for all p forms.  From this identity, it is clear that if omega is closed, then omega is exact.  There are many possible formulas for H(omega) but the simplest homotopy operator, and the one given in most textbooks, depends upon an integration of the coefficients of the differential form omega from the origin 0 to the general point x along the line tx -- where t is the integration parameter.  This is the homotopy operator which is invoked by the command DeRhamHomotopy in its simplest form.

 

For further details, we refer to the texts Boothby, page 274, Flanders, page27, Lovelock and Rund, page 141.

G > 

with(DifferentialGeometry):

G > 

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

 

Example 1.  Define a 2-form omega1.

E4 > 

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

ω1ydx`^`dz`^`dw+xdy`^`dz`^`dw

(6.1)

 

The form omega1 is closed.

E4 > 

ExteriorDerivative(omega1);

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

(6.2)

 

To find a 1-form eta1 whose exterior derivative is omega1, apply the de Rham homotopy operator to omega1.

E4 > 

eta1 := DeRhamHomotopy(omega1);

η1wydx`^`dz4yzdx`^`dw4+wxdy`^`dz4xzdy`^`dw4+xydz`^`dw2

(6.3)

 

Check that omega1 is the exterior derivative of eta1.

E4 > 

check := ExteriorDerivative(eta1) &minus omega1;

check0dx`^`dy`^`dz

(6.4)

 

The optional arguments for the DeRhamHomotopy command give the user some control over the path of integration used in defining the homotopy operator.

 

– 

The option initialpoint = x0 changes the default integration path tx (a straight line from the origin to x) to tx + (1 - t)x0 (a straight line from the point x0 to x).  This option is useful when the differential form is singular at the origin.

– 

The option integrationlimits = [1, infinity] changes the integration path to tx, t = 1 .. infinity.  This option can be very useful when the coefficients of the differential form -> 0 as x-> infinity (more precisely, if F is any coefficient of the differential form, then it is necessary that tF(tx) ~ t^-(1 + epsilon) as t -> infinity for the integral in the homotopy formula to converge).

– 

The option path = "zigzag" changes the integration path to a sequence of coordinates lines.  For example, if the coordinates are [x, y, z], the integration path is the sequence of 3 straight lines from [0, 0, 0] to [x, 0, 0], from [x, 0, 0] to [x, y, 0], and [x, y, 0] to [x, y, z].  The order in which these coordinates lines are chosen may be customized with the variableorder = [var1, var2, ... ] option.  The use of the path = "zigzag" option often results in a simpler output from the DeRhamHomotopy procedure.

 

Here are a few simple examples which illustrate the use of these options.

 

Example 2.  Define a 2-form omega2 and use the DeRhamHomotopy command with various options to find different forms eta2a, eta2b, ... all of whose exterior derivatives are omega2.

E4 > 

omega2 := evalDG(x*dx &w dy);

ω2xdx`^`dy

(6.5)
E4 > 

eta2a := DeRhamHomotopy(omega2);

eta2axydx3+x2dy3

(6.6)
E4 > 

eta2b := DeRhamHomotopy(omega2, initialpoint = [x = 1, y = 2]);

eta2b16y13xy+13+23xdx+1616x+13x2dy

(6.7)
E4 > 

eta2c := DeRhamHomotopy(omega2, path = "zigzag");

eta2cxydx

(6.8)
E4 > 

eta2d := DeRhamHomotopy(omega2, path = "zigzag", variableorder = [y, x, w, z]);

eta2dx2dy2

(6.9)
E4 > 

eta2e := DeRhamHomotopy(omega2, path = "zigzag", variableorder = [y, x, w, z], initialpoint = [x = 1, y = 2]);

eta2e12+x22dy

(6.10)

 

The exterior derivative of each the forms eta2a ... eta2e returns the correct result, namely, omega2.

E4 > 

ExteriorDerivative([eta2a, eta2b, eta2c, eta2d, eta2e]);

xdx`^`dy,xdx`^`dy,xdx`^`dy,xdx`^`dy,xdx`^`dy

(6.11)

 

Example 3.  Here are a few examples which illustrate the use of DeRhamHomotopy for forms with singularities.

E4 > 

omega3 := evalDG(1/x^3 *dx &w dy);

ω3dx`^`dyx3

(6.12)
E4 > 

eta3 := DeRhamHomotopy(omega3, integrationlimits = [1, infinity]);

η3ydxx3+dyx2

(6.13)
E4 > 

omega4 := evalDG(1/x *dx &w dy);

ω4dx`^`dyx

(6.14)
E4 > 

eta4a := DeRhamHomotopy(omega4, path = "zigzag");

eta4aydxx

(6.15)
E4 > 

eta4b := DeRhamHomotopy(omega4, path = "zigzag", initialpoint = [x = 1], variableorder = [y, x, w, z]);

eta4blnxdy

(6.16)

 

Exercises

Exercise 1

 

Calculate the exterior derivatives of the forms alpha1 ... alpha5.  If the form is closed, find a form of which it is the exterior derivative.

 

E4 > 

with(DifferentialGeometry):

E4 > 

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

M > 

alpha1 := evalDG(y^3 *dx + w^3 *dy);

α1y3dx+w3dy

(7.1.1)
M > 

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

α2ⅇydx`^`dy`^`dz+ⅇxzdx`^`dz`^`dw

(7.1.2)
M > 

alpha3 := evalDG(-y*w/(x*z + 1)^2*z*dx + w/(x*z + 1)*dy - y*w/(x*z + 1)^2*x*dz + y/(x*z + 1)*dw);

α3wyzdxxz+12+wdyxz+1wyxdzxz+12+ydwxz+1

(7.1.3)
M > 

alpha4 := evalDG((z*w^2 + z*x^2 + w*x^2 + w*z^2)/(x^2 + z^2)/(w^2 + x^2)*dx &w dz + x/(w^2 + x^2)*dz &w dw);

α4zw2+zx2+wx2+wz2dx`^`dzx2+z2w2+x2+xdz`^`dww2+x2

(7.1.4)
M > 

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

α5x2dx`^`dy`^`dzyydy`^`dz`^`dwz2

(7.1.5)

 

Solution

 

Part [i]  The form alpha1 is not closed.

M > 

ExteriorDerivative(alpha1);

3y2dx`^`dy3w2dy`^`dw

(7.1.1.1)

 

Part [ii]  The form alpha2 is closed.  We give two different forms beta2a and beta2b whose exterior derivative is alpha2.

M > 

ExteriorDerivative(alpha2);

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

(7.1.1.2)
M > 

beta2a := DeRhamHomotopy(alpha2);

beta2az2+2ⅇy2yⅇy+ⅇyy2dx`^`dyy3+6wzy2+2x4+wzⅇxy2x33wzⅇxy2x2+6wzⅇxy2x6wzⅇxy22ⅇyx4+2ⅇyx4yⅇyx4y2dx`^`dzx4y2z266ⅇx+ⅇxx33ⅇxx2+6ⅇxxdx`^`dwx4+x2+2ⅇy2yⅇy+ⅇyy2dy`^`dzy3+z66ⅇx+ⅇxx33ⅇxx2+6ⅇxxdz`^`dwx3

(7.1.1.3)
M > 

beta2b := DeRhamHomotopy(alpha2, path = "zigzag");

beta2bzⅇydx`^`dy+wⅇxzdx`^`dz

(7.1.1.4)
M > 

ExteriorDerivative(beta2a) &minus alpha2;

0dx`^`dy`^`dz

(7.1.1.5)
M > 

ExteriorDerivative(beta2b) &minus alpha2;

0dx`^`dy`^`dz

(7.1.1.6)

 

Part [iii]  The form alpha3 is closed.

M > 

ExteriorDerivative(alpha3);

0dx`^`dy

(7.1.1.7)
M > 

beta3 := DeRhamHomotopy(alpha3, path = "zigzag");

β3ywxz+1

(7.1.1.8)
M > 

ExteriorDerivative(beta3) &minus alpha3;

0dx

(7.1.1.9)

 

Part [iv]  The form alpha4 is closed.  Because the form is not defined at the origin, the standard homotopy formula will not work.

M > 

ExteriorDerivative(alpha4);

0dx`^`dy`^`dz

(7.1.1.10)
M > 

beta4 := DeRhamHomotopy(alpha4, path = "zigzag");

β412lnx2+z2x2dxarctanwxdz

(7.1.1.11)
M > 

ExteriorDerivative(beta4) &minus alpha4;

0dx`^`dy

(7.1.1.12)

 

Part [iv]  The form alpha5 is closed.  Because the form is not defined at the origin, the standard homotopy formula will not work.

M > 

ExteriorDerivative(alpha5);

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

(7.1.1.13)
M > 

beta5a := DeRhamHomotopy(alpha5, initialpoint =[y = 1, z = 1], path = "zigzag");

beta5az1x2dx`^`dyywydy`^`dzz2

(7.1.1.14)
M > 

beta5b := DeRhamHomotopy(alpha5, initialpoint = [y = 1, z = 1], path = "zigzag", variableorder = [y, z, x, w]);

beta5bx3z2+3wy2dy`^`dz3z2y

(7.1.1.15)
M > 

ExteriorDerivative(beta5a) &minus alpha5;

0dx`^`dy`^`dz

(7.1.1.16)
M > 

ExteriorDerivative(beta5b) &minus alpha5;

0dx`^`dy`^`dz

(7.1.1.17)

Exercise 2

 

Find all functions k(x, y, u, v) such that the form alpha is closed.

 

M > 

with(DifferentialGeometry):

M > 

DGsetup([x, y, z, w], E3);

frame name: E3

(7.2.1)
E3 > 

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

αkx,y,z,wdx`^`dyxy2dy`^`dz+wzdz`^`dw

(7.2.2)

 

Solution

 

Compute the exterior derivative of alpha and set the coefficients to 0 to get the pde for the function f which must be satisfied for d(alpha) = 0.

E3 > 

beta := ExteriorDerivative(alpha);

βy2+kzdx`^`dy`^`dz+kwdx`^`dy`^`dw

(7.2.1.1)
E3 > 

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

Eqy2+kz,kw

(7.2.1.2)
E3 > 

soln := pdsolve(Eq, k(x, y, z, w));

solnkx,y,z,w=y2z+_F1x,y

(7.2.1.3)
E3 > 

Answer := eval(alpha, soln);

Answery2z+_F1x,ydx`^`dyxy2dy`^`dz+wzdz`^`dw

(7.2.1.4)

Exercise 3

 

Use the de Rham homotopy operator to find a vector whose divergence is the function f.

 

E3 > 

with(DifferentialGeometry):

E3 > 

DGsetup([x, y, u, v], E4):

E4 > 

f := x^2*y^2*u^2*v^2 - 2*x*y*u*v;

fx2y2u2v22xyuv

(7.3.1)

 

Solution

 

E4 > 

omega := f &mult Tools:-DGvolume("form");

ωx2y2u2v22xyuvdx`^`dy`^`du`^`dv

(7.3.1.1)
E4 > 

eta1 := DeRhamHomotopy(omega);

η1v3x2y2u212+v2xyu4dx`^`dy`^`du+u3x2y2v212u2xyv4dx`^`dy`^`dv+x2y3u2v212+xy2uv4dx`^`du`^`dv+x3y2u2v212x2yuv4dy`^`du`^`dv

(7.3.1.2)

 

E4 > 

C := Tools:-DGinfo(eta1, "CoefficientList", "all");

Cv3x2y2u212+v2xyu4,u3x2y2v212u2xyv4,x2y3u2v212+xy2uv4,x3y2u2v212x2yuv4

(7.3.1.3)

 

From the coefficients of eta1, we define the vector X -- see the formula given above for the exterior derivative of a 3 form.

E4 > 

X := DGzip(C, evalDG([-D_v, D_u, -D_y, D_x]), "plus");

Xx3y2u2v212x2yuv4D_x+x2y3u2v212xy2uv4D_y+u3x2y2v212u2xyv4D_u+v3x2y2u212v2xyu4D_v

(7.3.1.4)
E4 > 

Tools:-Divergence(X);

x2y2u2v22xyuv

(7.3.1.5)

Exercise 4

 

The exterior derivative is usually defined in terms of the Lie bracket as follows:

[i]  If omega is a 1-form and X and Y vector fields, then

(d omega)(X, Y) = X(omega(Y)) - Y(omega(X) - omega([X, Y])

[ii]  If omega is a 2-form and X, Y, and Z are vector fields, then

(d omega)(X, Y, Z) = X(omega(Y, Z)) - Y(omega(X, Z)) + Z(omega(X, Y)) - omega([X, Y], Z) + omega([Z, X], Y) - omega([Y, Z], X)

 

In addition to the Cartan formula, the exterior derivative satisfies the following identities.  Check these identities by means of examples.  As in previous exercises, the best way to do this is to write simple programs.

[iii]  d(alpha &w beta) = d(alpha) &w beta +/- alpha &w d(beta), where the - sign is used when the degree of alpha is odd.

[iv]  d(d(omega) = 0.

[v]  H(d (omega)) + d (H(omega)) = omega.

 

Here is some test data you can use to check your programs.

 

E4 > 

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

M > 

alpha1 := evalDG(z*x*dx + y^2*dw);

α1xzdx+y2dw

(7.4.1)
M > 

alpha2 := evalDG(x*w*dy + 3*y^2*z*dw);

α2wxdy+3y2zdw

(7.4.2)
M > 

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

α3xydx`^`dw+x2dy`^`dz

(7.4.3)
M > 

alpha4 := evalDG(exp(y)*dx &w dz - exp(x)*dz &w dw);

α4ⅇydx`^`dzⅇxdz`^`dw

(7.4.4)
M > 

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

α5z3+x3dx`^`dy`^`dzxywdy`^`dz`^`dw

(7.4.5)
M > 

X1 := evalDG(x*D_x + 2*y*D_y + 3*z*D_z + 4*w*D_w);

X1xD_x+2yD_y+3zD_z+4wD_w

(7.4.6)
M > 

X2 := evalDG(y*D_x - x*D_y);

X2yD_xxD_y

(7.4.7)
M > 

X3 := evalDG(x*D_y + y*D_z + z*D_w);

X3xD_y+yD_z+zD_w

(7.4.8)

 

Solution

 

Part [i]

E3 > 

ExteriorDerivativeDefinition1 := proc(omega, X, Y)

E3 > 

local a, a1, b, b1, b2, b3;

E3 > 

a1 := ExteriorDerivative(omega):

E3 > 

a := Hook([X, Y], a1);

E3 > 

b1 := LieDerivative(X, Hook(Y, omega));

E3 > 

b2 := LieDerivative(Y, Hook(X, omega));

E3 > 

b3 := Hook(LieBracket(X, Y), omega);

E3 > 

b := evalDG(b1 - b2 - b3);

E3 > 

evalDG(a - b);

M > 

end:

 

Test ExteriorDerivativeDefinition1.

M > 

ExteriorDerivativeDefinition1(alpha1, X1, X2);

0

(7.4.1.1)
M > 

ExteriorDerivativeDefinition1(alpha1, X2, X3);

0

(7.4.1.2)

 

Part [ii]

E3 > 

ExteriorDerivativeDefinition2 := proc(omega, X, Y, Z)

E3 > 

local a, a1, b1, b2, b3, b4, b5, b6, b;

E3 > 

a1 := ExteriorDerivative(omega):

E3 > 

a := Hook([X, Y, Z], a1);

E3 > 

b1 := LieDerivative(X, Hook([Y, Z], omega));

E3 > 

b2 := LieDerivative(Y, Hook([X, Z], omega));

E3 > 

b3 := LieDerivative(Z, Hook([X, Y], omega));

E3 > 

b4 := Hook([LieBracket(X, Y), Z], omega);

E3 > 

b5 := Hook([LieBracket(X, Z), Y], omega);

E3 > 

b6 := Hook([LieBracket(Y, Z), X], omega);

E3 > 

b := evalDG(b1 - b2 + b3 - b4 + b5 - b6);

E3 > 

simplify(evalDG(a - b));

M > 

end:

 

Test ExteriorDerivativeDefinition2.

M > 

ExteriorDerivativeDefinition2(alpha3, X1, X2, X3);

0

(7.4.1.3)
M > 

ExteriorDerivativeDefinition2(alpha4, X1, X2, X3);

0

(7.4.1.4)

 

Part [iii]

E3 > 

ExteriorDerivativeAntiDerivation := proc(alpha, beta)

E3 > 

local a1, a, b, b1, b2, p;

E3 > 

a1 := alpha &wedge beta;

E3 > 

a := ExteriorDerivative(a1);

M > 

b1 := ExteriorDerivative(alpha) &wedge beta;

M > 

p := Tools:-DGinfo(alpha, "FormDegree");

M > 

b2 := ((-1)^p) &mult (alpha &wedge ExteriorDerivative(beta));

M > 

b := b1 &plus b2;

M > 

a &minus b;

M > 

end:

 

Test ExteriorDerivativeAntiDerivation.

M > 

ExteriorDerivativeAntiDerivation(alpha1, alpha2);

M > 

ExteriorDerivativeAntiDerivation(alpha1, alpha3);

0dx`^`dy`^`dz

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

(7.4.1.5)

 

Part [iv]

E3 > 

ExteriorDerivativeSquared := proc(omega)

E3 > 

local a, a1;

E3 > 

a1 := ExteriorDerivative(omega);

E3 > 

a := ExteriorDerivative(a1);

M > 

end:

 

Test ExteriorDerivativeSquared.

M > 

ExteriorDerivativeSquared(alpha1);

0dx`^`dy`^`dz

(7.4.1.6)
M > 

ExteriorDerivativeSquared(alpha3);

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

(7.4.1.7)

 

Part [v]

M > 

DeRhamHomotopyIdentity := proc()

M > 

local a, b, b1, b2, c;

M > 

a := args[1];

M > 

b1 := ExteriorDerivative(DeRhamHomotopy(args));

M > 

b2 := DeRhamHomotopy(ExteriorDerivative(args[1]), args[2 .. -1]);

M > 

b := b1 &plus b2;

M > 

a &minus b;

M > 

end:

 

Test DeRhamHomotopyIdentity.

M > 

DeRhamHomotopyIdentity(alpha1);

0dx

(7.4.1.8)
M > 

DeRhamHomotopyIdentity(alpha2);

0dx

(7.4.1.9)
M > 

DeRhamHomotopyIdentity(alpha3, path = "zigzag");

0dx`^`dy

(7.4.1.10)
M > 

DeRhamHomotopyIdentity(alpha5, initialpoint = [x = 1, y = 2, z = 3, w = 4]);

0dx`^`dy`^`dz

(7.4.1.11)

Exercise 5

 

The following Pfaffian systems appear as exercises in Goursat's classic text Lecons sur les equations aux derivees partielles, page 138. Check that each is integrable.

 

M > 

with(DifferentialGeometry):

M > 

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

M1 > 

DGsetup([x1, x2, x3, x4], M2):

M2 > 

DGsetup([x1, x2, x3, x4, x5], M3):

M3 > 

DGsetup([x, y, u, v], M4):

M4 > 

DGsetup([x, y, z, u, v, w], M5):

M5 > 

DGsetup([x1, x2, x3, u1, u2, u3], M6):

M6 > 

DGsetup([x1, x2, x3, z1, z2, z3], M7):

M7 > 

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

 

Exercise 1[i]

M8 > 

ChangeFrame(M1):

M1 > 

Omega1i := evalDG([x1*(x2 - 1)*(x3 - 1)*dx1 + x2*(x3 - 1)*(x1 - 1)*dx2 + x3*(x1 - 1)*(x2 - 1)*dx3]);

Omega1ix1x21x31dx1+x2x311+x1dx2+x31+x1x21dx3

(7.5.1)

 

Exercise 1[ii]

M1 > 

Omega1ii := evalDG([dx1 + (x1/x2)*dx2 - x1/(2*x3)*dx3]);

Omega1iidx1+x1dx2x2x1dx32x3

(7.5.2)

 

Exercise 1[iii]

M1 > 

ChangeFrame(M2):

M2 > 

Omega1iii := evalDG([dx1 + x1/(2*x2)*dx2 - (x3*x4)/(x1*x2)*dx3 - x3^2/(2*x1*x2)*dx4]);

Omega1iiidx1+x1dx22x2x3x4dx3x1x2x32dx42x1x2

(7.5.3)

 

Exercise 1[iv]

M2 > 

ChangeFrame(M3):

M3 > 

Omega1iv := evalDG([dx1 + (x1/(x2*log(x2*x3)))*dx2 + (x1/(x3*log(x2*x3)))*dx3 + (x1/x5*arctan(x4/x5))*dx4 - (x1*x4/x5^2*arctan(x4/x5))*dx5]);

Omega1ivdx1+x1dx2x2lnx2x3+x1dx3x3lnx2x3+x1arctanx4x5dx4x5x4x1arctanx4x5dx5x52

(7.5.4)

 

Exercise 2[i]

M3 > 

ChangeFrame(M4):

M4 > 

Omega2i := evalDG([(v*y - u*x)*du - ((u^2 + y^2)*dx + (u*v + x*y)*dy),(u*x - v*y)*dv - ((u*v + x*y)*dx + (v^2 + x^2)*dy)]);

Omega2iu2y2dx+uvxydy+yvxudu,uvxydx+v2x2dy+xuyvdv

(7.5.5)

 

Exercise 2[ii]

M4 > 

ChangeFrame(M5):

M5 > 

omega1 := evalDG((u - v)*(u - w)/((u*x - 1)*(u*y - 1)*(u*z - 1))*du - (1/(u*x - 1)*dx + 1/(u*y - 1)*dy + 1/(u*z - 1)*dz)):

M5 > 

omega2 := evalDG((v - u)*(v - w)/((v*x - 1)*(v*y - 1)*(v*z - 1))*dv - (1/(v*x - 1)*dx + 1/(v*y - 1)*dy + 1/(v*z - 1)*dz)):

M5 > 

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

M5 > 

Omega2ii := [omega1, omega2, omega3];

Omega2iidxxu1dyyu1dzuz1u+vuwduxu1yu1uz1,dxxv1dyyv1dzvz1+u+vvwdvxv1yv1vz1,dxwx1dyyw1dzwz1+uwvwdwwx1yw1wz1

(7.5.6)

 

Exercise 2[iii]

M5 > 

ChangeFrame(M6):

M6 > 

omega1 := evalDG(du1 - (u1*(-2*x1 + x2 + a)/((x1 - x2)*(x1 - a))*dx1 + u2*(a - x2)/((x1 - x2)*(x1 - a))*dx2)):

M6 > 

omega2 := evalDG(du2 - (u1*(a - x1)/((x2 - x1)*(x2 - a))*dx1 + u2*(-2*x2 + x1 + a)/((x2 - x1)*(x2 - a))*dx2)):

M6 > 

omega3 := evalDG(du3 - (u1*(x2 - x1)/((a - x1)*(a - x2))*dx1 + u2*(x1 - x2)/((a - x1)*(a - x2))*dx2)):

M6 > 

Omega2iii := [omega1, omega2, omega3];

Omega2iiiu12x1+x2+adx1x1x2x1+a+u2ax2dx2x1x2x1+a+du1,u1x1+adx1x1x2ax2u22x2+x1+adx2x1x2ax2+du2,u1x1x2dx1x1+aax2u2x1x2dx2x1+aax2+du3

(7.5.7)

 

Exercise 2[iv]

M6 > 

ChangeFrame(M7):

M7 > 

omega1 := evalDG((x1 - x2)*(x1 - x3)*dz1 - (z1*(-2*x1 + x2 + x3)*dx1 + z2*(x3 - x2)*dx2 + z3*(x2 - x3)*dx3)):

M7 > 

omega2 := evalDG((x2 - x1)*(x2 - x3)*dz2 - (z1*(x3 - x1)*dx1 + z2*(-2*x2 + x1 + x3)*dx2 + z3*(x1 - x3)*dx3)):

M7 > 

omega3 := evalDG((x3 - x1)*(x3 - x2)*dz3 - (z1*(x2 - x1)*dx1 + z2*(x1 - x2)*dx2 + z3*(-2*x3 + x1 + x2)*dx3)):

M7 > 

Omega2iv := [omega1, omega2, omega3];

Omega2ivz12x1x2x3dx1+z2x2x3dx2z3x2x3dx3+x1x2x1x3dz1,z1x1x3dx1z22x2+x1+x3dx2z3x1x3dx3x1x2x2x3dz2,z1x1x2dx1z2x1x2dx2z32x3+x1+x2dx3+x1x3x2x3dz3

(7.5.8)

 

Exercise 2[v]

M7 > 

ChangeFrame(M5);

M7

(7.5.9)
M5 > 

omega1 := evalDG(du - (u*dx + v*dy + w*dz)):

M5 > 

omega2 := evalDG(dv - (v*dx + w*dy + u*dz)):

M5 > 

omega3 := evalDG(dw - (w*dx + u*dy + v*dz)):

M5 > 

Omega2v := [omega1, omega2, omega3];

Omega2vudxvdywdz+du,vdxwdyudz+dv,wdxudyvdz+dw

(7.5.10)

 

Exercise 2[vi]

M5 > 

ChangeFrame(M5);

M5

(7.5.11)
M5 > 

omega1 := evalDG(du - ((u + x)*dx + (v + y + 1)*dy + (w + z + 1)*dz)):

M5 > 

omega2 := evalDG(dv - ((v + y + 1)*dx + (w + z)*dy + (u + x + 1)*dz)):

M5 > 

omega3 := evalDG(dw - ((w + z + 1)*dx + (u + x + 1)*dy + (v + y)*dz)):

M5 > 

Omega2vi := [omega1, omega2, omega3];

Omega2viuxdx+vy1dy+wz1dz+du,vy1dx+wzdy+ux1dz+dv,wz1dx+ux1dy+vydz+dw

(7.5.12)

 

Find exact linear combinations of the Pfaffian systems.

Exercise 3[i]

M5 > 

ChangeFrame(M8):

M8 > 

Omega3i := [dz - (t + x*y + x*z)*dx - (x*z*t + y - x*y)*dy, dt - (y + z - 3*x)*dx - (z*t - y)*dy];

Omega3idzt+xy+xzdxxzt+yxydy,dty+z3xdxztydy

(7.5.13)

 

Exercise 3[ii]

M8 > 

Omega3ii := [dx + dy + dz + (x + 1)*dt, x*dx*y*dy + z*dz - x*dt];

Omega3iidx+dy+dz+x+1dt,xdxydy+zdzxdt

(7.5.14)

 

Solution

 

We write a simple program to test if a Pfaffian system is integrable.

E4 > 

IntegrablePfaffianSystem := proc(Omega)

E4 > 

local nu, i, p, alpha, beta, C;

M5 > 

p := nops(Omega);

E4 > 

nu := DGzip(Omega, "wedge");

E4 > 

for i from 1 to p do

E4 > 

alpha := ExteriorDerivative(Omega[i]);

E4 > 

beta := simplify(alpha &wedge nu);

E4 > 

C := Tools:-DGinfo(beta, "CoefficientSet");

E4 > 

if C <> {0} then return(false, i) fi;

E4 > 

od;

E4 > 

true;

M8 > 

end:

M8 > 

 

map(IntegrablePfaffianSystem, [Omega1i, Omega1ii, Omega1iii, Omega1iv]);

true&comma;true&comma;true&comma;true

(7.5.1.1)
M3 > 

map(IntegrablePfaffianSystem, [Omega2i, Omega2ii, Omega2iii, Omega2iv, Omega2v, Omega2vi]);

true&comma;true&comma;true&comma;true&comma;true&comma;true

(7.5.1.2)

Exercise 6

 

This exercise is based upon Example 2, page 103, of Flanders, Differential Forms with Applications to the Physical Sciences, where the system of equations

d(A) =  ThetaA - A Theta   (*)

is considered.  Here Theta is a given p x p matrix of 1-forms and (*) is to be solved for the p x p matrix A of functions.  The integrability conditions for this system is that there is a 2-form alpha such that

d(Theta) - Theta &w Theta = alpha I    and      d(alpha) = 0 (**)

where I is the identity matrix.

 

[i]  Write a program which checks these integrability conditions.  Test your program on the following matrices.

 

M5 > 

with(DifferentialGeometry): with(Tools):

M5 > 

DGsetup([x, y], M2):

M2 > 

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

M3 > 

ChangeFrame(M2):

M2 > 

Theta1:= Matrix([[x &mult dy, ((1/(x^2) + 1/x*y + y^2) &mult dx) &plus ((x*y) &mult dy)], [0 &mult dx, (-y) &mult dx]]);

&Theta;1xdy1&plus;xy&plus;y2x2dxx2&plus;xydy0dxydx

(7.6.1)
M2 > 

ChangeFrame(M3):

M3 > 

Theta2 := Matrix(evalDG([[z*dy, -1/x*dy - y*(y + z)/x*dz], [x*dz, 1/x*dx + z*dy + (2*y + z)*dz]]));

&Theta;2zdydyxyy&plus;zdzxxdzdxx&plus;zdy&plus;2y&plus;zdz

(7.6.2)
M3 > 

Theta3 := Matrix(evalDG([[dx, exp(-y)*dx, -z^2*y*dx + z^2*dy + (-1 - x + z^2*y + 2*y*z)*dz], [0 &mult dx, dy, exp(y)*dx + x*exp(y)*dz], [0 &mult dx, 0 &mult dx, dz]]));

&Theta;3dx&ExponentialE;ydxz2ydx&plus;z2dy&plus;1x&plus;z2y&plus;2yzdz0dxdy&ExponentialE;ydx&plus;x&ExponentialE;ydz0dx0dxdz

(7.6.3)

 

[ii]  Write a program which solves (*) for a given Omega and a given (optional) set of initial values for A.  Apply to the matrices Theta1, Theta2, Theta3.

 

Solution

Part [i]

M3 > 

CheckIntegrablity := proc(Theta, {show := false})

M3 > 

local p, Id, Omega1, Omega2, alpha, beta, Fr, n;

M3 > 

p := LinearAlgebra:-RowDimension(Theta):

M2 > 

Fr := Tools:-DGinfo(Theta[1, 1], "ObjectFrame");

M2 > 

n := Tools:-DGinfo(Fr, "FrameBaseDimension");

M3 > 

Id := LinearAlgebra:-IdentityMatrix(p);

M3 > 

use Tools in

M3 > 

Omega1 := ExteriorDerivative(Theta) &MatrixMinus (Theta &MatrixWedge Theta); end;

M3 > 

alpha := Omega1[1, 1];

M3 > 

use Tools in Omega2 := Id &MatrixMult alpha;

M3 > 

end;

M3 > 

if not LinearAlgebra:-Equal(Omega1, Omega2) then

M3 > 

if show = true then return(Omega1) else return(false) fi;

M3 > 

fi;

M3 > 

if n >2

M2 > 

then beta := ExteriorDerivative(alpha);

M3 > 

if Tools:-DGinfo(beta, "CoefficientSet") <> {0} then

M3 > 

if show = true then return(alpha) else return(false) fi;

M3 > 

fi; fi;

M3 > 

true:

M3 > 

end:

 

Use the program CheckIntegrability to verify that Theta1, Theta2, Theta3 satisfy the integrability condition (*).

M3 > 

ChangeFrame(M2):

 

M2 > 

CheckIntegrablity(Theta1);

true

(7.6.1.1)
M2 > 

CheckIntegrablity(Theta2);

true

(7.6.1.2)
M3 > 

CheckIntegrablity(Theta3);

true

(7.6.1.3)

 

Part [ii]

M3 > 

Flanders := proc(Theta, {initialpoint := [], initialvalue := []})

M3 > 

local Fr, vars, p, A, UnknownFunctions, M, Eq1, Eq2, Eq3, Soln, A0, IC;

M3 > 

Fr := Tools:-DGinfo(Theta[1, 1], "ObjectFrame");

M3 > 

vars := op(Tools:-DGinfo(Fr, "FrameIndependentVariables"));

M3 > 

p := LinearAlgebra:-RowDimension(Theta);

M3 > 

A := Matrix(p, p, (i, j) -> F||i||j(vars));

M3 > 

UnknownFunctions := convert(A, set);

M3 > 

use Tools in  M := ExteriorDerivative(A) &MatrixMinus ((Theta &MatrixMult A) &MatrixMinus (A &MatrixMult Theta)) end:

M3 > 

Eq1 := convert(M, set);

M3 > 

Eq2 := map(Tools:-DGinfo, Eq1, "CoefficientSet");

M3 > 

Eq3 := map(op, Eq2);

M3 > 

if initialpoint <>[] then

M3 > 

A0 := eval(A, initialpoint);

M3 > 

IC := convert(A0 - initialvalue, set);

M3 > 

Soln := [pdsolve(Eq3, IC)];

M3 > 

else

M3 > 

Soln := [pdsolve(Eq3, UnknownFunctions)];

M3 > 

fi;

M3 > 

seq(eval(A, S), S = Soln);

M3 > 

end:

 

M3 > 

Flanders(Theta1);

1&plus;xy_C1&ExponentialE;xyx&plus;_C3_C11&plus;xy2&ExponentialE;xy&plus;xx_C4&ExponentialE;xy&plus;_C2&plus;_C31&plus;xyx2_C1&ExponentialE;xy1&plus;xy_C1&ExponentialE;xyx&plus;_C2

(7.6.1.4)
M2 > 

Flanders(Theta2);

yz_F1z&plus;_F2z_F1zyy&plus;zx_F1zx_F1zy&plus;_F2z

(7.6.1.5)
M3 > 

Flanders(Theta3);

_C1z2yx1&ExponentialE;zx&plus;_C5_C4&ExponentialE;x&ExponentialE;y_C1z2yx1&ExponentialE;zx_C4&ExponentialE;x&plus;_C2z2yx1&ExponentialE;z_C3&plus;_C5&plus;&ExponentialE;x_C7_C11&plus;z2yz2yx1&ExponentialE;zx&plus;_C41&plus;z2y&ExponentialE;x&plus;&ExponentialE;x_C9_C8&ExponentialE;zx_C2z2yx1&ExponentialE;z&ExponentialE;x_C7x&plus;_C3_C6x&plus;_C6_C51&plus;z2y&ExponentialE;y_C11&plus;x&ExponentialE;zx&plus;_C1&ExponentialE;x&plus;_C2&ExponentialE;y&ExponentialE;z&ExponentialE;y_C2&ExponentialE;z&plus;_C4&ExponentialE;xx_C1&ExponentialE;zx&plus;x_C2&ExponentialE;z&plus;_C3&plus;_C4&ExponentialE;x&ExponentialE;yx_C11&plus;z2y&ExponentialE;zx&plus;_C41&plus;z2y&ExponentialE;x_C8&ExponentialE;z&plus;xx_C2&ExponentialE;z_C6&plus;_C3_C1&ExponentialE;x&ExponentialE;z_C1&ExponentialE;x&plus;_C2&ExponentialE;y&ExponentialE;z_C1z2y&plus;1&ExponentialE;zxx_C2&ExponentialE;z&plus;_C6

(7.6.1.6)

Exercise 7

 

Find the left and right invariant forms and vector fields for the following 6 dimensional matrix group.

 

M3 > 

P := Matrix([[x1, x3, 0, x4], [0, x1, 0, x5], [0, 0, x2, x6], [0, 0, 0, 1]]);

Px1x30x40x10x500x2x60001

(7.7.1)

 

Solution

 

M3 > 

with(DifferentialGeometry): with(Tools):

M3 > 

DGsetup([x1, x2, x3, x4, x5, x6], G):

 

Calculate the left invariant 1-forms.

G > 

OmegaL0 := (P^(-1)) &MatrixMult ExteriorDerivative(P);

OmegaL0dx1x1x3dx1x12&plus;dx3x10dx1dx4x1x3dx5x120dx1dx1x10dx1dx5x10dx10dx1dx2x2dx6x20dx10dx10dx10dx1

(7.7.1.1)
G > 

OmegaL := [OmegaL0[1, 1], OmegaL0[1, 2], OmegaL0[1, 4], OmegaL0[2, 4], OmegaL0[3, 3], OmegaL0[3, 4]];

OmegaLdx1x1&comma;x3dx1x12&plus;dx3x1&comma;dx4x1x3dx5x12&comma;dx5x1&comma;dx2x2&comma;dx6x2

(7.7.1.2)

 

Calculate the left invariant vector fields.

G > 

XL := DualBasis(OmegaL);

XLx1D_x1&plus;x3D_x3&comma;x1D_x3&comma;x1D_x4&comma;x3D_x4&plus;x1D_x5&comma;x2D_x2&comma;x2D_x6

(7.7.1.3)

 

Calculate the right invariant 1-forms.

G > 

OmegaR0 := ExteriorDerivative(P) &MatrixMult (P^(-1));

OmegaR0dx1x1x3dx1x12&plus;dx3x10dx1x3x5&plus;x4x1dx1x12x5dx3x1&plus;dx40dx1dx1x10dx1x5dx1x1&plus;dx50dx10dx1dx2x2x6dx2x2&plus;dx60dx10dx10dx10dx1

(7.7.1.4)
G > 

OmegaR := [OmegaR0[1, 1], OmegaR0[1, 2], OmegaR0[1, 4], OmegaR0[2, 4], OmegaR0[3, 3], OmegaR0[3, 4]];

OmegaRdx1x1&comma;x3dx1x12&plus;dx3x1&comma;x3x5&plus;x4x1dx1x12x5dx3x1&plus;dx4&comma;x5dx1x1&plus;dx5&comma;dx2x2&comma;x6dx2x2&plus;dx6

(7.7.1.5)

 

Calculate the right invariant vector fields.

G > 

XR := DualBasis(OmegaR);

XRx1D_x1&plus;x3D_x3&plus;x4D_x4&plus;x5D_x5&comma;x1D_x3&plus;x5D_x4&comma;D_x4&comma;D_x5&comma;x2D_x2&plus;x6D_x6&comma;D_x6

(7.7.1.6)

 

Check the invariance of the right invariant 1-forms.

G > 

Matrix(6, 6, (i, j) -> LieDerivative(XL[i], OmegaR[j]));

0dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx1

(7.7.1.7)

 

Check that the left invariant vector fields and the right invariant vector fields commute.

G > 

Matrix(6, 6, (i, j) -> LieDerivative(XL[i], XR[j]));

0D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x10D_x1

(7.7.1.8)

 

Check the invariance of the left invariant 1-forms.

G > 

Matrix(6, 6, (i, j) -> LieDerivative(XR[i], OmegaL[j]));

0dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx10dx1

(7.7.1.9)