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
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.
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
vars := x, y, z, w:
PDEtools[declare](M(vars), N(vars), P(vars), Q(vars), quiet);
Example 1. The exterior derivative of a function.
f := M(vars);
f ≔ M
ExteriorDerivative(f);
Mx⁢dx+My⁢dy+Mz⁢dz+Mw⁢dw
Example 2. The exterior derivative of a 1-form.
alpha1 := evalDG(M(vars)*dx + N(vars)*dy + P(vars)*dz + Q(vars)*dw);
α1 ≔ M⁢dx+N⁢dy+P⁢dz+Q⁢dw
ExteriorDerivative(alpha1);
Nx−My⁢dx⁢`^`⁢dy+Px−Mz⁢dx⁢`^`⁢dz+Qx−Mw⁢dx⁢`^`⁢dw+Py−Nz⁢dy⁢`^`⁢dz+Qy−Nw⁢dy⁢`^`⁢dw+Qz−Pw⁢dz⁢`^`⁢dw
Example 3. The exterior derivative of a 2-form.
alpha2 := evalDG(M(vars)*dx &w dy + N(vars)*dz &w dw);
α2 ≔ M⁢dx⁢`^`⁢dy+N⁢dz⁢`^`⁢dw
ExteriorDerivative(alpha2);
Mz⁢dx⁢`^`⁢dy⁢`^`⁢dz+Mw⁢dx⁢`^`⁢dy⁢`^`⁢dw+Nx⁢dx⁢`^`⁢dz⁢`^`⁢dw+Ny⁢dy⁢`^`⁢dz⁢`^`⁢dw
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:=−Q⁢dx⁢`^`⁢dy⁢`^`⁢dz+P⁢dx⁢`^`⁢dy⁢`^`⁢dw−N⁢dx⁢`^`⁢dz⁢`^`⁢dw+M⁢dy⁢`^`⁢dz⁢`^`⁢dw
ExteriorDerivative(alpha3);
0⁢dx
Example 5. The ExteriorDerivative command may be applied directly to a Matrix of functions or differential forms.
A := Matrix([[x, y], [z, w]]):
Omega := ExteriorDerivative(A);
Ω ≔ dxdydzdw
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.
LieDerivativeCartan := proc(X, omega)
local a, b1, b2, b, c, d;
a := LieDerivative(X, omega);
b1 := Hook(X, ExteriorDerivative(omega));
b2 := ExteriorDerivative(Hook(X,omega));
b := b1 &plus b2;
c := a &minus b;
d := Tools:-DGinfo(c, "CoefficientSet");
end:
Check the Cartan formula using the vector X and the differential forms alpha and beta.
DGsetup([x, y, z, w], M):
X := evalDG(x^2*D_x - x*z*D_y + w*z*D_w);
X ≔ x2⁢D_x−x⁢z⁢D_y+w⁢z⁢D_w
alpha := evalDG(z &mult dx &w dy);
α ≔ z⁢dx⁢`^`⁢dy
beta := evalDG(y^2 *dy &w dz &w dw);
β ≔ y2⁢dy⁢`^`⁢dz⁢`^`⁢dw
LieDerivativeCartan(X, alpha);
0
LieDerivativeCartan(X, beta);
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.
DGsetup([x, y, u, v], E4):
Here is a rank 2 Pfaffian system.
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]);
P ≔ −y2+x2⁢dy+−y⁢u−x⁢v⁢du+−y⁢v−x⁢u⁢dv,x⁢v+y⁢u⁢dx+y⁢v+x⁢u⁢dy+v2−u2⁢dv
We check that P is integrable:
ExteriorDerivative(P[1]) &wedge P[1] &wedge P[2];
0⁢dx⁢`^`⁢dy⁢`^`⁢du⁢`^`⁢dv
ExteriorDerivative(P[2]) &wedge P[1] &wedge P[2];
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.
f1 := x*y - u*v;
f1 ≔ x⁢y−u⁢v
f2 := 1/2*(x^2 + y^2 + u^2 + v^2);
f2 ≔ x22+y22+u22+v22
GetComponents(ExteriorDerivative(f1), P);
vx⁢v+y⁢u,yx⁢v+y⁢u
GetComponents(ExteriorDerivative(f2), P);
−ux⁢v+y⁢u,xx⁢v+y⁢u
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.
DGsetup([x1, x2, x3], G);
frame name: G
Consider the following set of matrices:
A := Matrix([[exp(-x1), -x1*exp(-x1), x2], [0, exp(-x1), x3], [0, 0, 1]]);
A ≔ ⅇ−x1−x1⁢ⅇ−x1x20ⅇ−x1x3001
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).
B := eval(A, [x1 = y1, x2 = y2, x3 = y3]); C := eval(A, [x1 = z1, x2 = z2, x3 = z3]);
B ≔ ⅇ−y1−y1⁢ⅇ−y1y20ⅇ−y1y3001
C ≔ ⅇ−z1−z1⁢ⅇ−z1z20ⅇ−z1z3001
Now find the scalar equations from the matrix equation A(x)B(y) = C(z).
eq1 := convert(A.B - C ,set);
eq1 ≔ 0,−ⅇ−x1⁢y1⁢ⅇ−y1−x1⁢ⅇ−x1⁢ⅇ−y1+z1⁢ⅇ−z1,ⅇ−x1⁢ⅇ−y1−ⅇ−z1,ⅇ−x1⁢y2−x1⁢ⅇ−x1⁢y3+x2−z2,ⅇ−x1⁢y3+x3−z3
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.
MultiplicationRule := solve(eq1, {z1, z2, z3});
MultiplicationRule ≔ z3=y3+x3⁢ⅇx1ⅇx1,z1=x1+y1,z2=−−y2+x1⁢y3−x2⁢ⅇx1ⅇx1
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.
eq2 := convert(A^(-1)-B, set);
eq2 ≔ 0,−x3ⅇ−x1−y3,1ⅇ−x1−ⅇ−y1,x1ⅇ−x1+y1⁢ⅇ−y1,−x1⁢x3+x2ⅇ−x1−y2
InverseFormula := solve(eq2, {y1,y2,y3});
InverseFormula ≔ y2=−x1⁢x3⁢ⅇx1−x2⁢ⅇx1,y1=−x1,y3=−x3⁢ⅇx1
To multiply matrices of differential forms we use the MatrixMultiply command from the Tools package.
with(Tools):
dA := ExteriorDerivative(A);
dA ≔ −ⅇ−x1⁢dx1ⅇ−x1⁢−1+x1⁢dx1dx20⁢dx1−ⅇ−x1⁢dx1dx30⁢dx10⁢dx10⁢dx1
OmegaL0 := (A^(-1)) &MatrixMult dA;
OmegaL0 ≔ −dx1−dx1ⅇx1⁢dx2+x1⁢ⅇx1⁢dx30⁢dx1−dx1ⅇx1⁢dx30⁢dx10⁢dx10⁢dx1
OmegaR0 := dA &MatrixMult (A^(-1));
OmegaR0 ≔ −dx1−dx1x3+x2⁢dx1+dx20⁢dx1−dx1x3⁢dx1+dx30⁢dx10⁢dx10⁢dx1
Verify the structure equation d(Omega) - Omega^Omega = 0 for the Maurer-Cartan forms in Matrix form.
ExteriorDerivative(OmegaL0) &MatrixPlus (OmegaL0 &MatrixWedge OmegaL0);
0⁢dx1⁢`^`⁢dx20⁢dx1⁢`^`⁢dx20⁢dx1⁢`^`⁢dx20⁢dx1⁢`^`⁢dx20⁢dx1⁢`^`⁢dx20⁢dx1⁢`^`⁢dx20⁢dx1⁢`^`⁢dx20⁢dx1⁢`^`⁢dx20⁢dx1⁢`^`⁢dx2
ExteriorDerivative(OmegaR0) &MatrixMinus (OmegaR0 &MatrixWedge OmegaR0);
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.)
OmegaL := [(-1) &mult OmegaL0[1, 1], OmegaL0[1, 3], OmegaL0[2, 3]];
OmegaL ≔ dx1,ⅇx1⁢dx2+x1⁢ⅇx1⁢dx3,ⅇx1⁢dx3
OmegaR := [(-1) &mult OmegaR0[1, 1], OmegaR0[1, 3], OmegaR0[2, 3]];
OmegaR ≔ dx1,x3+x2⁢dx1+dx2,x3⁢dx1+dx3
Calculate the left invariant vector fields for the group as the dual vectors to the left invariant 1-forms.
XL := DualBasis(OmegaL);
XL ≔ D_x1,ⅇ−x1⁢D_x2,−x1⁢ⅇ−x1⁢D_x2+ⅇ−x1⁢D_x3
Calculate the right invariant vector fields for the group as the dual vectors to the right invariant 1-forms.
XR := DualBasis(OmegaR);
XR ≔ D_x1+−x3−x2⁢D_x2−x3⁢D_x3,D_x2,D_x3
The left invariant 1-forms are always invariant with respect to the right invariant vector fields. Let's check this.
Matrix(3, 3, (i, j) -> LieDerivative(XR[i], OmegaL[j]));
0⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx1
The right invariant 1-forms are always invariant with respect to the left invariant vector fields.
Matrix(3, 3, (i, j) -> LieDerivative(XL[i], OmegaR[j]));
The left invariant 1-vector fields always commute with the right invariant vector fields.
Matrix(3, 3, (i, j) -> LieBracket(XL[i], XR[j]));
0⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x1
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.
DGsetup([x, y, z, w], E4):
Example 1. Define a 2-form omega1.
omega1 := evalDG(y*dx &w dz &w dw + x*dy &w dz &w dw);
ω1 ≔ y⁢dx⁢`^`⁢dz⁢`^`⁢dw+x⁢dy⁢`^`⁢dz⁢`^`⁢dw
The form omega1 is closed.
ExteriorDerivative(omega1);
0⁢dx⁢`^`⁢dy⁢`^`⁢dz⁢`^`⁢dw
To find a 1-form eta1 whose exterior derivative is omega1, apply the de Rham homotopy operator to omega1.
eta1 := DeRhamHomotopy(omega1);
η1 ≔ w⁢y⁢dx⁢`^`⁢dz4−y⁢z⁢dx⁢`^`⁢dw4+w⁢x⁢dy⁢`^`⁢dz4−x⁢z⁢dy⁢`^`⁢dw4+x⁢y⁢dz⁢`^`⁢dw2
Check that omega1 is the exterior derivative of eta1.
check := ExteriorDerivative(eta1) &minus omega1;
check ≔ 0⁢dx⁢`^`⁢dy⁢`^`⁢dz
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.
omega2 := evalDG(x*dx &w dy);
ω2 ≔ x⁢dx⁢`^`⁢dy
eta2a := DeRhamHomotopy(omega2);
eta2a ≔ −x⁢y⁢dx3+x2⁢dy3
eta2b := DeRhamHomotopy(omega2, initialpoint = [x = 1, y = 2]);
eta2b ≔ −16⁢y−13⁢x⁢y+13+23⁢x⁢dx+−16−16⁢x+13⁢x2⁢dy
eta2c := DeRhamHomotopy(omega2, path = "zigzag");
eta2c ≔ −x⁢y⁢dx
eta2d := DeRhamHomotopy(omega2, path = "zigzag", variableorder = [y, x, w, z]);
eta2d ≔ x2⁢dy2
eta2e := DeRhamHomotopy(omega2, path = "zigzag", variableorder = [y, x, w, z], initialpoint = [x = 1, y = 2]);
eta2e ≔ −12+x22⁢dy
The exterior derivative of each the forms eta2a ... eta2e returns the correct result, namely, omega2.
ExteriorDerivative([eta2a, eta2b, eta2c, eta2d, eta2e]);
x⁢dx⁢`^`⁢dy,x⁢dx⁢`^`⁢dy,x⁢dx⁢`^`⁢dy,x⁢dx⁢`^`⁢dy,x⁢dx⁢`^`⁢dy
Example 3. Here are a few examples which illustrate the use of DeRhamHomotopy for forms with singularities.
omega3 := evalDG(1/x^3 *dx &w dy);
ω3 ≔ dx⁢`^`⁢dyx3
eta3 := DeRhamHomotopy(omega3, integrationlimits = [1, infinity]);
η3 ≔ −y⁢dxx3+dyx2
omega4 := evalDG(1/x *dx &w dy);
ω4 ≔ dx⁢`^`⁢dyx
eta4a := DeRhamHomotopy(omega4, path = "zigzag");
eta4a ≔ −y⁢dxx
eta4b := DeRhamHomotopy(omega4, path = "zigzag", initialpoint = [x = 1], variableorder = [y, x, w, z]);
eta4b ≔ ln⁡x⁢dy
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.
alpha1 := evalDG(y^3 *dx + w^3 *dy);
α1 ≔ y3⁢dx+w3⁢dy
alpha2 := evalDG(exp(y)*dx &w dy &w dz + exp(x)*z*dx &w dz &w dw);
α2 ≔ ⅇy⁢dx⁢`^`⁢dy⁢`^`⁢dz+ⅇx⁢z⁢dx⁢`^`⁢dz⁢`^`⁢dw
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);
α3 ≔ −w⁢y⁢z⁢dxx⁢z+12+w⁢dyx⁢z+1−w⁢y⁢x⁢dzx⁢z+12+y⁢dwx⁢z+1
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);
α4 ≔ z⁢w2+z⁢x2+w⁢x2+w⁢z2⁢dx⁢`^`⁢dzx2+z2⁢w2+x2+x⁢dz⁢`^`⁢dww2+x2
alpha5 := evalDG(x^2/y*dx &w dy &w dz - y/z^2*dy &w dz &w dw);
α5 ≔ x2⁢dx⁢`^`⁢dy⁢`^`⁢dzy−y⁢dy⁢`^`⁢dz⁢`^`⁢dwz2
Solution
Part [i] The form alpha1 is not closed.
−3⁢y2⁢dx⁢`^`⁢dy−3⁢w2⁢dy⁢`^`⁢dw
Part [ii] The form alpha2 is closed. We give two different forms beta2a and beta2b whose exterior derivative is alpha2.
beta2a := DeRhamHomotopy(alpha2);
beta2a ≔ z⁢−2+2⁢ⅇy−2⁢y⁢ⅇy+ⅇy⁢y2⁢dx⁢`^`⁢dyy3+6⁢w⁢z⁢y2+2⁢x4+w⁢z⁢ⅇx⁢y2⁢x3−3⁢w⁢z⁢ⅇx⁢y2⁢x2+6⁢w⁢z⁢ⅇx⁢y2⁢x−6⁢w⁢z⁢ⅇx⁢y2−2⁢ⅇy⁢x4+2⁢ⅇy⁢x4⁢y−ⅇy⁢x4⁢y2⁢dx⁢`^`⁢dzx4⁢y2−z2⁢6−6⁢ⅇx+ⅇx⁢x3−3⁢ⅇx⁢x2+6⁢ⅇx⁢x⁢dx⁢`^`⁢dwx4+x⁢−2+2⁢ⅇy−2⁢y⁢ⅇy+ⅇy⁢y2⁢dy⁢`^`⁢dzy3+z⁢6−6⁢ⅇx+ⅇx⁢x3−3⁢ⅇx⁢x2+6⁢ⅇx⁢x⁢dz⁢`^`⁢dwx3
beta2b := DeRhamHomotopy(alpha2, path = "zigzag");
beta2b ≔ z⁢ⅇy⁢dx⁢`^`⁢dy+w⁢ⅇx⁢z⁢dx⁢`^`⁢dz
ExteriorDerivative(beta2a) &minus alpha2;
0⁢dx⁢`^`⁢dy⁢`^`⁢dz
ExteriorDerivative(beta2b) &minus alpha2;
Part [iii] The form alpha3 is closed.
0⁢dx⁢`^`⁢dy
beta3 := DeRhamHomotopy(alpha3, path = "zigzag");
β3 ≔ y⁢wx⁢z+1
ExteriorDerivative(beta3) &minus alpha3;
Part [iv] The form alpha4 is closed. Because the form is not defined at the origin, the standard homotopy formula will not work.
ExteriorDerivative(alpha4);
beta4 := DeRhamHomotopy(alpha4, path = "zigzag");
β4 ≔ −12⁢ln⁡x2+z2x2⁢dx−arctan⁡wx⁢dz
ExteriorDerivative(beta4) &minus alpha4;
Part [iv] The form alpha5 is closed. Because the form is not defined at the origin, the standard homotopy formula will not work.
ExteriorDerivative(alpha5);
beta5a := DeRhamHomotopy(alpha5, initialpoint =[y = 1, z = 1], path = "zigzag");
beta5a ≔ z−1⁢x2⁢dx⁢`^`⁢dyy−w⁢y⁢dy⁢`^`⁢dzz2
beta5b := DeRhamHomotopy(alpha5, initialpoint = [y = 1, z = 1], path = "zigzag", variableorder = [y, z, x, w]);
beta5b ≔ −−x3⁢z2+3⁢w⁢y2⁢dy⁢`^`⁢dz3⁢z2⁢y
ExteriorDerivative(beta5a) &minus alpha5;
ExteriorDerivative(beta5b) &minus alpha5;
Exercise 2
Find all functions k(x, y, u, v) such that the form alpha is closed.
alpha := evalDG(k(x, y, z, w)*dx &w dy - x*y^2*dy &w dz + z*w* dz &w dw);
α ≔ k⁡x,y,z,w⁢dx⁢`^`⁢dy−x⁢y2⁢dy⁢`^`⁢dz+w⁢z⁢dz⁢`^`⁢dw
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.
beta := ExteriorDerivative(alpha);
β ≔ −y2+kz⁢dx⁢`^`⁢dy⁢`^`⁢dz+kw⁢dx⁢`^`⁢dy⁢`^`⁢dw
Eq := Tools:-DGinfo(beta, "CoefficientSet");
Eq ≔ −y2+kz,kw
soln := pdsolve(Eq, k(x, y, z, w));
soln ≔ k⁡x,y,z,w=y2⁢z+_F1⁡x,y
Answer := eval(alpha, soln);
Answer ≔ y2⁢z+_F1⁡x,y⁢dx⁢`^`⁢dy−x⁢y2⁢dy⁢`^`⁢dz+w⁢z⁢dz⁢`^`⁢dw
Exercise 3
Use the de Rham homotopy operator to find a vector whose divergence is the function f.
f := x^2*y^2*u^2*v^2 - 2*x*y*u*v;
f ≔ x2⁢y2⁢u2⁢v2−2⁢x⁢y⁢u⁢v
omega := f &mult Tools:-DGvolume("form");
ω ≔ x2⁢y2⁢u2⁢v2−2⁢x⁢y⁢u⁢v⁢dx⁢`^`⁢dy⁢`^`⁢du⁢`^`⁢dv
eta1 := DeRhamHomotopy(omega);
η1 ≔ −v3⁢x2⁢y2⁢u212+v2⁢x⁢y⁢u4⁢dx⁢`^`⁢dy⁢`^`⁢du+u3⁢x2⁢y2⁢v212−u2⁢x⁢y⁢v4⁢dx⁢`^`⁢dy⁢`^`⁢dv+−x2⁢y3⁢u2⁢v212+x⁢y2⁢u⁢v4⁢dx⁢`^`⁢du⁢`^`⁢dv+x3⁢y2⁢u2⁢v212−x2⁢y⁢u⁢v4⁢dy⁢`^`⁢du⁢`^`⁢dv
C := Tools:-DGinfo(eta1, "CoefficientList", "all");
C ≔ −v3⁢x2⁢y2⁢u212+v2⁢x⁢y⁢u4,u3⁢x2⁢y2⁢v212−u2⁢x⁢y⁢v4,−x2⁢y3⁢u2⁢v212+x⁢y2⁢u⁢v4,x3⁢y2⁢u2⁢v212−x2⁢y⁢u⁢v4
From the coefficients of eta1, we define the vector X -- see the formula given above for the exterior derivative of a 3 form.
X := DGzip(C, evalDG([-D_v, D_u, -D_y, D_x]), "plus");
X ≔ x3⁢y2⁢u2⁢v212−x2⁢y⁢u⁢v4⁢D_x+x2⁢y3⁢u2⁢v212−x⁢y2⁢u⁢v4⁢D_y+u3⁢x2⁢y2⁢v212−u2⁢x⁢y⁢v4⁢D_u+v3⁢x2⁢y2⁢u212−v2⁢x⁢y⁢u4⁢D_v
Tools:-Divergence(X);
x2⁢y2⁢u2⁢v2−2⁢x⁢y⁢u⁢v
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.
alpha1 := evalDG(z*x*dx + y^2*dw);
α1 ≔ x⁢z⁢dx+y2⁢dw
alpha2 := evalDG(x*w*dy + 3*y^2*z*dw);
α2 ≔ w⁢x⁢dy+3⁢y2⁢z⁢dw
alpha3 := evalDG(x^2*dy &w dz - x*y*dx &w dw);
α3 ≔ −x⁢y⁢dx⁢`^`⁢dw+x2⁢dy⁢`^`⁢dz
alpha4 := evalDG(exp(y)*dx &w dz - exp(x)*dz &w dw);
α4 ≔ ⅇy⁢dx⁢`^`⁢dz−ⅇx⁢dz⁢`^`⁢dw
alpha5 := evalDG((z^3 + x^3)*dx &w dy &w dz - (x*y*w)*dy &w dz &w dw);
α5 ≔ z3+x3⁢dx⁢`^`⁢dy⁢`^`⁢dz−x⁢y⁢w⁢dy⁢`^`⁢dz⁢`^`⁢dw
X1 := evalDG(x*D_x + 2*y*D_y + 3*z*D_z + 4*w*D_w);
X1 ≔ x⁢D_x+2⁢y⁢D_y+3⁢z⁢D_z+4⁢w⁢D_w
X2 := evalDG(y*D_x - x*D_y);
X2 ≔ y⁢D_x−x⁢D_y
X3 := evalDG(x*D_y + y*D_z + z*D_w);
X3 ≔ x⁢D_y+y⁢D_z+z⁢D_w
Part [i]
ExteriorDerivativeDefinition1 := proc(omega, X, Y)
local a, a1, b, b1, b2, b3;
a1 := ExteriorDerivative(omega):
a := Hook([X, Y], a1);
b1 := LieDerivative(X, Hook(Y, omega));
b2 := LieDerivative(Y, Hook(X, omega));
b3 := Hook(LieBracket(X, Y), omega);
b := evalDG(b1 - b2 - b3);
evalDG(a - b);
Test ExteriorDerivativeDefinition1.
ExteriorDerivativeDefinition1(alpha1, X1, X2);
ExteriorDerivativeDefinition1(alpha1, X2, X3);
Part [ii]
ExteriorDerivativeDefinition2 := proc(omega, X, Y, Z)
local a, a1, b1, b2, b3, b4, b5, b6, b;
a := Hook([X, Y, Z], a1);
b1 := LieDerivative(X, Hook([Y, Z], omega));
b2 := LieDerivative(Y, Hook([X, Z], omega));
b3 := LieDerivative(Z, Hook([X, Y], omega));
b4 := Hook([LieBracket(X, Y), Z], omega);
b5 := Hook([LieBracket(X, Z), Y], omega);
b6 := Hook([LieBracket(Y, Z), X], omega);
b := evalDG(b1 - b2 + b3 - b4 + b5 - b6);
simplify(evalDG(a - b));
Test ExteriorDerivativeDefinition2.
ExteriorDerivativeDefinition2(alpha3, X1, X2, X3);
ExteriorDerivativeDefinition2(alpha4, X1, X2, X3);
Part [iii]
ExteriorDerivativeAntiDerivation := proc(alpha, beta)
local a1, a, b, b1, b2, p;
a1 := alpha &wedge beta;
a := ExteriorDerivative(a1);
b1 := ExteriorDerivative(alpha) &wedge beta;
p := Tools:-DGinfo(alpha, "FormDegree");
b2 := ((-1)^p) &mult (alpha &wedge ExteriorDerivative(beta));
a &minus b;
Test ExteriorDerivativeAntiDerivation.
ExteriorDerivativeAntiDerivation(alpha1, alpha2);
ExteriorDerivativeAntiDerivation(alpha1, alpha3);
Part [iv]
ExteriorDerivativeSquared := proc(omega)
local a, a1;
a1 := ExteriorDerivative(omega);
Test ExteriorDerivativeSquared.
ExteriorDerivativeSquared(alpha1);
ExteriorDerivativeSquared(alpha3);
Part [v]
DeRhamHomotopyIdentity := proc()
local a, b, b1, b2, c;
a := args[1];
b1 := ExteriorDerivative(DeRhamHomotopy(args));
b2 := DeRhamHomotopy(ExteriorDerivative(args[1]), args[2 .. -1]);
Test DeRhamHomotopyIdentity.
DeRhamHomotopyIdentity(alpha1);
DeRhamHomotopyIdentity(alpha2);
DeRhamHomotopyIdentity(alpha3, path = "zigzag");
DeRhamHomotopyIdentity(alpha5, initialpoint = [x = 1, y = 2, z = 3, w = 4]);
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.
DGsetup([x1, x2, x3], M1):
DGsetup([x1, x2, x3, x4], M2):
DGsetup([x1, x2, x3, x4, x5], M3):
DGsetup([x, y, u, v], M4):
DGsetup([x, y, z, u, v, w], M5):
DGsetup([x1, x2, x3, u1, u2, u3], M6):
DGsetup([x1, x2, x3, z1, z2, z3], M7):
DGsetup([x, y, z, t], M8):
Exercise 1[i]
ChangeFrame(M1):
Omega1i := evalDG([x1*(x2 - 1)*(x3 - 1)*dx1 + x2*(x3 - 1)*(x1 - 1)*dx2 + x3*(x1 - 1)*(x2 - 1)*dx3]);
Omega1i ≔ x1⁢x2−1⁢x3−1⁢dx1+x2⁢x3−1⁢−1+x1⁢dx2+x3⁢−1+x1⁢x2−1⁢dx3
Exercise 1[ii]
Omega1ii := evalDG([dx1 + (x1/x2)*dx2 - x1/(2*x3)*dx3]);
Omega1ii ≔ dx1+x1⁢dx2x2−x1⁢dx32⁢x3
Exercise 1[iii]
ChangeFrame(M2):
Omega1iii := evalDG([dx1 + x1/(2*x2)*dx2 - (x3*x4)/(x1*x2)*dx3 - x3^2/(2*x1*x2)*dx4]);
Omega1iii ≔ dx1+x1⁢dx22⁢x2−x3⁢x4⁢dx3x1⁢x2−x32⁢dx42⁢x1⁢x2
Exercise 1[iv]
ChangeFrame(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]);
Omega1iv ≔ dx1+x1⁢dx2x2⁢ln⁡x2⁢x3+x1⁢dx3x3⁢ln⁡x2⁢x3+x1⁢arctan⁡x4x5⁢dx4x5−x4⁢x1⁢arctan⁡x4x5⁢dx5x52
Exercise 2[i]
ChangeFrame(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)]);
Omega2i ≔ −u2−y2⁢dx+−u⁢v−x⁢y⁢dy+y⁢v−x⁢u⁢du,−u⁢v−x⁢y⁢dx+−v2−x2⁢dy+x⁢u−y⁢v⁢dv
Exercise 2[ii]
ChangeFrame(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)):
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)):
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)):
Omega2ii := [omega1, omega2, omega3];
Omega2ii ≔ −dxx⁢u−1−dyy⁢u−1−dzu⁢z−1−−u+v⁢u−w⁢dux⁢u−1⁢y⁢u−1⁢u⁢z−1,−dxx⁢v−1−dyy⁢v−1−dzv⁢z−1+−u+v⁢v−w⁢dvx⁢v−1⁢y⁢v−1⁢v⁢z−1,−dxw⁢x−1−dyy⁢w−1−dzw⁢z−1+u−w⁢v−w⁢dww⁢x−1⁢y⁢w−1⁢w⁢z−1
Exercise 2[iii]
ChangeFrame(M6):
omega1 := evalDG(du1 - (u1*(-2*x1 + x2 + a)/((x1 - x2)*(x1 - a))*dx1 + u2*(a - x2)/((x1 - x2)*(x1 - a))*dx2)):
omega2 := evalDG(du2 - (u1*(a - x1)/((x2 - x1)*(x2 - a))*dx1 + u2*(-2*x2 + x1 + a)/((x2 - x1)*(x2 - a))*dx2)):
omega3 := evalDG(du3 - (u1*(x2 - x1)/((a - x1)*(a - x2))*dx1 + u2*(x1 - x2)/((a - x1)*(a - x2))*dx2)):
Omega2iii := [omega1, omega2, omega3];
Omega2iii ≔ u1⁢−2⁢x1+x2+a⁢dx1x1−x2⁢−x1+a+u2⁢a−x2⁢dx2x1−x2⁢−x1+a+du1,−u1⁢−x1+a⁢dx1x1−x2⁢a−x2−u2⁢−2⁢x2+x1+a⁢dx2x1−x2⁢a−x2+du2,u1⁢x1−x2⁢dx1−x1+a⁢a−x2−u2⁢x1−x2⁢dx2−x1+a⁢a−x2+du3
Exercise 2[iv]
ChangeFrame(M7):
omega1 := evalDG((x1 - x2)*(x1 - x3)*dz1 - (z1*(-2*x1 + x2 + x3)*dx1 + z2*(x3 - x2)*dx2 + z3*(x2 - x3)*dx3)):
omega2 := evalDG((x2 - x1)*(x2 - x3)*dz2 - (z1*(x3 - x1)*dx1 + z2*(-2*x2 + x1 + x3)*dx2 + z3*(x1 - x3)*dx3)):
omega3 := evalDG((x3 - x1)*(x3 - x2)*dz3 - (z1*(x2 - x1)*dx1 + z2*(x1 - x2)*dx2 + z3*(-2*x3 + x1 + x2)*dx3)):
Omega2iv := [omega1, omega2, omega3];
Omega2iv ≔ z1⁢2⁢x1−x2−x3⁢dx1+z2⁢x2−x3⁢dx2−z3⁢x2−x3⁢dx3+x1−x2⁢x1−x3⁢dz1,z1⁢x1−x3⁢dx1−z2⁢−2⁢x2+x1+x3⁢dx2−z3⁢x1−x3⁢dx3−x1−x2⁢x2−x3⁢dz2,z1⁢x1−x2⁢dx1−z2⁢x1−x2⁢dx2−z3⁢−2⁢x3+x1+x2⁢dx3+x1−x3⁢x2−x3⁢dz3
Exercise 2[v]
ChangeFrame(M5);
M7
omega1 := evalDG(du - (u*dx + v*dy + w*dz)):
omega2 := evalDG(dv - (v*dx + w*dy + u*dz)):
omega3 := evalDG(dw - (w*dx + u*dy + v*dz)):
Omega2v := [omega1, omega2, omega3];
Omega2v ≔ −u⁢dx−v⁢dy−w⁢dz+du,−v⁢dx−w⁢dy−u⁢dz+dv,−w⁢dx−u⁢dy−v⁢dz+dw
Exercise 2[vi]
M5
omega1 := evalDG(du - ((u + x)*dx + (v + y + 1)*dy + (w + z + 1)*dz)):
omega2 := evalDG(dv - ((v + y + 1)*dx + (w + z)*dy + (u + x + 1)*dz)):
omega3 := evalDG(dw - ((w + z + 1)*dx + (u + x + 1)*dy + (v + y)*dz)):
Omega2vi := [omega1, omega2, omega3];
Omega2vi ≔ −u−x⁢dx+−v−y−1⁢dy+−w−z−1⁢dz+du,−v−y−1⁢dx+−w−z⁢dy+−u−x−1⁢dz+dv,−w−z−1⁢dx+−u−x−1⁢dy+−v−y⁢dz+dw
Find exact linear combinations of the Pfaffian systems.
Exercise 3[i]
ChangeFrame(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];
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
Exercise 3[ii]
Omega3ii := [dx + dy + dz + (x + 1)*dt, x*dx*y*dy + z*dz - x*dt];
Omega3ii ≔ dx+dy+dz+x+1⁢dt,x⁢dx⁢y⁢dy+z⁢dz−x⁢dt
We write a simple program to test if a Pfaffian system is integrable.
IntegrablePfaffianSystem := proc(Omega)
local nu, i, p, alpha, beta, C;
p := nops(Omega);
nu := DGzip(Omega, "wedge");
for i from 1 to p do
alpha := ExteriorDerivative(Omega[i]);
beta := simplify(alpha &wedge nu);
C := Tools:-DGinfo(beta, "CoefficientSet");
if C <> {0} then return(false, i) fi;
od;
true;
map(IntegrablePfaffianSystem, [Omega1i, Omega1ii, Omega1iii, Omega1iv]);
true,true,true,true
map(IntegrablePfaffianSystem, [Omega2i, Omega2ii, Omega2iii, Omega2iv, Omega2v, Omega2vi]);
true,true,true,true,true,true
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.
with(DifferentialGeometry): with(Tools):
DGsetup([x, y], M2):
DGsetup([x, y, z], M3):
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]]);
Θ1 ≔ x⁢dy1+x⁢y+y2⁢x2⁢dxx2+x⁢y⁢dy0⁢dx−y⁢dx
Theta2 := Matrix(evalDG([[z*dy, -1/x*dy - y*(y + z)/x*dz], [x*dz, 1/x*dx + z*dy + (2*y + z)*dz]]));
Θ2 ≔ z⁢dy−dyx−y⁢y+z⁢dzxx⁢dzdxx+z⁢dy+2⁢y+z⁢dz
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]]));
Θ3 ≔ dxⅇ−y⁢dx−z2⁢y⁢dx+z2⁢dy+−1−x+z2⁢y+2⁢y⁢z⁢dz0⁢dxdyⅇy⁢dx+x⁢ⅇy⁢dz0⁢dx0⁢dxdz
[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.
CheckIntegrablity := proc(Theta, {show := false})
local p, Id, Omega1, Omega2, alpha, beta, Fr, n;
p := LinearAlgebra:-RowDimension(Theta):
Fr := Tools:-DGinfo(Theta[1, 1], "ObjectFrame");
n := Tools:-DGinfo(Fr, "FrameBaseDimension");
Id := LinearAlgebra:-IdentityMatrix(p);
use Tools in
Omega1 := ExteriorDerivative(Theta) &MatrixMinus (Theta &MatrixWedge Theta); end;
alpha := Omega1[1, 1];
use Tools in Omega2 := Id &MatrixMult alpha;
end;
if not LinearAlgebra:-Equal(Omega1, Omega2) then
if show = true then return(Omega1) else return(false) fi;
fi;
if n >2
then beta := ExteriorDerivative(alpha);
if Tools:-DGinfo(beta, "CoefficientSet") <> {0} then
if show = true then return(alpha) else return(false) fi;
fi; fi;
true:
Use the program CheckIntegrability to verify that Theta1, Theta2, Theta3 satisfy the integrability condition (*).
CheckIntegrablity(Theta1);
true
CheckIntegrablity(Theta2);
CheckIntegrablity(Theta3);
Flanders := proc(Theta, {initialpoint := [], initialvalue := []})
local Fr, vars, p, A, UnknownFunctions, M, Eq1, Eq2, Eq3, Soln, A0, IC;
vars := op(Tools:-DGinfo(Fr, "FrameIndependentVariables"));
p := LinearAlgebra:-RowDimension(Theta);
A := Matrix(p, p, (i, j) -> F||i||j(vars));
UnknownFunctions := convert(A, set);
use Tools in M := ExteriorDerivative(A) &MatrixMinus ((Theta &MatrixMult A) &MatrixMinus (A &MatrixMult Theta)) end:
Eq1 := convert(M, set);
Eq2 := map(Tools:-DGinfo, Eq1, "CoefficientSet");
Eq3 := map(op, Eq2);
if initialpoint <>[] then
A0 := eval(A, initialpoint);
IC := convert(A0 - initialvalue, set);
Soln := [pdsolve(Eq3, IC)];
else
Soln := [pdsolve(Eq3, UnknownFunctions)];
seq(eval(A, S), S = Soln);
Flanders(Theta1);
−1+x⁢y⁢_C1⁢ⅇ−x⁢yx+_C3−_C1⁢1+x⁢y2⁢ⅇ−x⁢y+x⁢x⁢_C4⁢ⅇx⁢y+−_C2+_C3⁢1+x⁢yx2_C1⁢ⅇ−x⁢y1+x⁢y⁢_C1⁢ⅇ−x⁢yx+_C2
Flanders(Theta2);
−y−z⁢_F1⁡z+_F2⁡z−_F1⁡z⁢y⁢y+zx_F1⁡z⁢x_F1⁡z⁢y+_F2⁡z
Flanders(Theta3);
_C1⁢z2⁢y−x−1⁢ⅇz−x+_C5−_C4⁢ⅇ−xⅇ−y⁢_C1⁢z2⁢y−x−1⁢ⅇz−x−_C4⁢ⅇ−x+_C2⁢z2⁢y−x−1⁢ⅇz−_C3+_C5+ⅇx⁢_C7−_C1⁢−1+z2⁢y⁢z2⁢y−x−1⁢ⅇz−x+_C4⁢−1+z2⁢y⁢ⅇ−x+ⅇx⁢_C9−_C8⁢ⅇ−z−x⁢_C2⁢z2⁢y−x−1⁢ⅇz−ⅇx⁢_C7⁢x+_C3−_C6⁢x+_C6−_C5⁢−1+z2⁢yⅇy⁢_C1⁢−1+x⁢ⅇz−x+_C1⁢ⅇ−x+_C2⁢ⅇ−y⁢ⅇz⁢ⅇy−_C2⁢ⅇz+_C4⁢ⅇ−xx⁢_C1⁢ⅇz−x+x⁢_C2⁢ⅇz+_C3+_C4⁢ⅇ−x−ⅇy⁢x⁢_C1⁢−1+z2⁢y⁢ⅇz−x+_C4⁢−1+z2⁢y⁢ⅇ−x−_C8⁢ⅇ−z+x⁢x⁢_C2⁢ⅇz−_C6+_C3_C1⁢ⅇ−x⁢ⅇz_C1⁢ⅇ−x+_C2⁢ⅇ−y⁢ⅇz_C1⁢−z2⁢y+1⁢ⅇz−x−x⁢_C2⁢ⅇz+_C6
Exercise 7
Find the left and right invariant forms and vector fields for the following 6 dimensional matrix group.
P := Matrix([[x1, x3, 0, x4], [0, x1, 0, x5], [0, 0, x2, x6], [0, 0, 0, 1]]);
P ≔ x1x30x40x10x500x2x60001
DGsetup([x1, x2, x3, x4, x5, x6], G):
Calculate the left invariant 1-forms.
OmegaL0 := (P^(-1)) &MatrixMult ExteriorDerivative(P);
OmegaL0 ≔ dx1x1−x3⁢dx1x12+dx3x10⁢dx1dx4x1−x3⁢dx5x120⁢dx1dx1x10⁢dx1dx5x10⁢dx10⁢dx1dx2x2dx6x20⁢dx10⁢dx10⁢dx10⁢dx1
OmegaL := [OmegaL0[1, 1], OmegaL0[1, 2], OmegaL0[1, 4], OmegaL0[2, 4], OmegaL0[3, 3], OmegaL0[3, 4]];
OmegaL ≔ dx1x1,−x3⁢dx1x12+dx3x1,dx4x1−x3⁢dx5x12,dx5x1,dx2x2,dx6x2
Calculate the left invariant vector fields.
XL ≔ x1⁢D_x1+x3⁢D_x3,x1⁢D_x3,x1⁢D_x4,x3⁢D_x4+x1⁢D_x5,x2⁢D_x2,x2⁢D_x6
Calculate the right invariant 1-forms.
OmegaR0 := ExteriorDerivative(P) &MatrixMult (P^(-1));
OmegaR0 ≔ dx1x1−x3⁢dx1x12+dx3x10⁢dx1−−x3⁢x5+x4⁢x1⁢dx1x12−x5⁢dx3x1+dx40⁢dx1dx1x10⁢dx1−x5⁢dx1x1+dx50⁢dx10⁢dx1dx2x2−x6⁢dx2x2+dx60⁢dx10⁢dx10⁢dx10⁢dx1
OmegaR := [OmegaR0[1, 1], OmegaR0[1, 2], OmegaR0[1, 4], OmegaR0[2, 4], OmegaR0[3, 3], OmegaR0[3, 4]];
OmegaR ≔ dx1x1,−x3⁢dx1x12+dx3x1,−−x3⁢x5+x4⁢x1⁢dx1x12−x5⁢dx3x1+dx4,−x5⁢dx1x1+dx5,dx2x2,−x6⁢dx2x2+dx6
Calculate the right invariant vector fields.
XR ≔ x1⁢D_x1+x3⁢D_x3+x4⁢D_x4+x5⁢D_x5,x1⁢D_x3+x5⁢D_x4,D_x4,D_x5,x2⁢D_x2+x6⁢D_x6,D_x6
Check the invariance of the right invariant 1-forms.
Matrix(6, 6, (i, j) -> LieDerivative(XL[i], OmegaR[j]));
0⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx10⁢dx1
Check that the left invariant vector fields and the right invariant vector fields commute.
Matrix(6, 6, (i, j) -> LieDerivative(XL[i], XR[j]));
0⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x10⁢D_x1
Check the invariance of the left invariant 1-forms.
Matrix(6, 6, (i, j) -> LieDerivative(XR[i], OmegaL[j]));
Download Help Document