DifferentialGeometry Lessons
Lesson 10: Tensor Analysis
|
Overview
|
|
In this lesson, you will learn to do the following:
–
|
Construct a connection and compute its torsion.
|
–
|
Compute the Christoffel connection from a metric.
|
–
|
Calculate the covariant derivative of a tensor.
|
–
|
Calculate the Riemann curvature tensor of a connection.
|
–
|
Calculate the Ricci tensor, the scalar curvature, the Einstein tensor.
|
–
|
Calculate the Weyl tensor.
|
|
|
Connections and Christoffel symbols, Torsion tensors
|
|
To create an affine connection, first construct a tensor with the desired components and then use the Connection command. The torsion of the connection is computed with the TorsionTensor command.
>
|
with(DifferentialGeometry): with(Tensor):
|
E2 >
|
T := evalDG(y*dx &t D_y &t dy);
|
| (2.1) |
| (2.2) |
E2 >
|
S := TorsionTensor(C);
|
| (2.3) |
Remark 1. Although the display for the tensor T and the connection C are the same, the internal representations are different.
E2 >
|
Tools:-DGinfo(T, "ObjectType");
|
| (2.4) |
E2 >
|
Tools:-DGinfo(C, "ObjectType");
|
| (2.5) |
Remark 2. We illustrate the fact that the rules for transforming and Lie differentiating the tensor T and the connection C are different.
E2 >
|
X := evalDG(x^3*D_x);
|
| (2.6) |
Here are the Lie derivatives of T and C.
E2 >
|
LieDerivative(X, T);
|
| (2.7) |
E2 >
|
LieDerivative(X, C);
|
| (2.8) |
E2 >
|
Phi := Transformation(E2, E2, [x = 1/x, y = 1/y]);
|
| (2.9) |
E2 >
|
InvPhi := InverseTransformation(Phi);
|
| (2.10) |
Here are the transformations of T and C.
E2 >
|
PushPullTensor(Phi, InvPhi, T);
|
| (2.11) |
E2 >
|
PushPullTensor(Phi, InvPhi, C);
|
| (2.12) |
The command Christoffel is used to construct the Christoffel connection for a metric g. With the optional argument "FirstKind", the Christoffel symbols of the first kind are computed.
E2 >
|
g := evalDG((1/y^2)*(dx &t dy + dy &t dx));
|
| (2.13) |
| (2.14) |
E2 >
|
C2 := Christoffel(g, "FirstKind");
|
| (2.15) |
| (2.16) |
|
|
Covariant derivatives
|
|
Let T be a tensor of type (r, s) (r = number of contravariant (upper) indices = number of 1-form arguments, s = number of covariant (lower) indices = number of vector arguments). The command DirectionalCovariantDerivative calculates the covariant derivative of T in the direction of a given vector field and with respect to a given connection -- a tensor of type (r, s) is returned. The command CovariantDerivative returns the covariant derivative of T as an (r, s + 1) tensor.
E2 >
|
with(DifferentialGeometry): with(Tensor):
|
E2 >
|
DGsetup([x, y], E2):
|
Define a vector field X, a connection C, and tensors T1 and T2.
E2 >
|
X := evalDG(a*D_x + b*D_y);
|
| (3.1) |
E2 >
|
C := Connection(alpha*dx &t D_y &t dy + beta*dy &t D_x &t dx);
|
| (3.2) |
E2 >
|
T1 := evalDG(dx &t D_x);
|
| (3.3) |
E2 >
|
T2 := evalDG(f(x, y)*dy &t D_y);
|
| (3.4) |
Calculate the covariant derivative of T1.
E2 >
|
dT1 := CovariantDerivative(T1, C);
|
| (3.5) |
Calculate the directional derivative of T1.
E2 >
|
DirectionalCovariantDerivative(X, T1, C);
|
| (3.6) |
Show that the directional covariant derivative is the contraction of the vector field X with the covariant derivative dT1.
E2 >
|
ContractIndices(X, dT1, [[1, 3]]);
|
| (3.7) |
Conversely, calculate the covariant derivative dT1 from the directional covariant derivatives of T1 in the coordinate directions.
E2 >
|
evalDG((DirectionalCovariantDerivative(D_x, T1, C) &t dx) + (DirectionalCovariantDerivative(D_y, T1, C) &t dy));
|
| (3.8) |
Calculate the covariant derivative of T2.
E2 >
|
CovariantDerivative(T2, C);
|
| (3.9) |
Connections on vector bundles can also be defined.
E2 >
|
DGsetup([x, y ,z], [u, v], E);
|
| (3.10) |
E >
|
C1 := Connection(alpha*dv &t D_v &t dx + beta*du &t D_u &t dy);
|
| (3.11) |
Define a tensor field T3 on the vector bundle E and take its covariant derivative.
E >
|
T3 := evalDG(y*du &t D_v);
|
| (3.12) |
E >
|
dT3 := CovariantDerivative(T3, C1);
|
| (3.13) |
Define a mixed tensor T4 -- i.e. a tensor product of tensors on the vector bundle and tensors on the tangent bundle. To covariantly differentiateT4, a connection C2 on the tangent bundle is also required.
E >
|
T4 := evalDG(x*dx &t D_v);
|
| (3.14) |
E >
|
C2 := Connection(gamma*dx &t D_x &t dx);
|
| (3.15) |
E >
|
dT4 := CovariantDerivative(T4, C1, C2);
|
| (3.16) |
The order in which the connections are specified does not matter.
E >
|
CovariantDerivative(T4, C2, C1);
|
| (3.17) |
|
|
Curvature tensors, Ricci tensor, Ricci scalar, Einstein tensor, Weyl tensor, Cotton tensor
|
|
These tensors are readily computed using the CurvatureTensor, RicciTensor, RicciScalar, EinsteinTensor, WeylTensor and CottonTensor commands. The CurvatureTensor command accepts either an arbitrary affine connection (connection on the tangent bundle), a connection on a vector bundle or a metric. The RicciTensor command computes the Ricci tensor for an arbitrary affine connection. The RicciScalar, EinsteinTensor, WeylTensor, and Cotton tensor commands may only be computed for metric connections.
E >
|
with(DifferentialGeometry): with(Tensor):
|
Example 1.
Define a metric g.
M >
|
g := (1/(k^2 + x^2 + y^2 + z^2)^2) &mult evalDG((dx &t dx + dy &t dy + dz &t dz ));
|
| (4.1) |
Calculate the Christoffel connection of g.
| (4.2) |
Calculate the curvature tensor for the metric g from its Christoffel symbol C.
M >
|
R := CurvatureTensor(C);
|
| (4.3) |
Calculate the Ricci tensor from the curvature tensor.
| (4.4) |
Calculate the Ricci scalar from the metric and its curvature tensor.
| (4.5) |
Calculate the Einstein tensor from the metric and its curvature tensor.
M >
|
EinsteinTensor(g, R);
|
| (4.6) |
Calculate the Cotton tensor from the metric, its Christoffel connection and its curvature. The Cotton tensor vanishes because the metric is conformally flat.
M >
|
CottonTensor(g, C, R);
|
| (4.7) |
Example 2.
For a general affine connection, we can still compute the curvature and Ricci tensors. Note that the Ricci tensor is no longer symmetric.
M >
|
C := Connection(z^2*dz &t D_y &t dx - x^2*dy &t D_x &t dz);
|
| (4.8) |
M >
|
R := CurvatureTensor(C);
|
| (4.9) |
| (4.10) |
Example 3.
The CurvatureTensor command also computes the curvature tensor of a connection on a vector bundle.
M >
|
DGsetup([x, y, z], [u, v], E);
|
| (4.11) |
E >
|
C := Connection(z^2*du &t D_v &t dx);
|
| (4.12) |
| (4.13) |
|
|
Exercises
|
|
|
Exercise 1
|
|
Let g be a metric. Then the Laplacian of a function f with respect to the metric g is defined as the trace of the second covariant derivative of f (that is, the contraction of the second covariant derivative with the inverse of the metric). Use this definition to calculate the Laplacian of a function in spherical coordinates.
Hint: Use the PushPullTensor command to transform the standard metric on Euclidean space to spherical coordinates.
E >
|
with(DifferentialGeometry): with(Tensor):
|
|
Solution
|
|
Define Cartesian and spherical coordinate systems.
E >
|
DGsetup([x, y, z], Euc):
|
Euc >
|
DGsetup([rho, theta, phi], Sph):
|
Define the Euclidean metric on Euc and use the PushPullTensor command to rewrite this metric in spherical coordinates.
Sph >
|
gEuc := evalDG(dx &t dx + dy &t dy + dz &t dz);
|
| (5.1.1.1) |
Euc >
|
T := Transformation(Sph, Euc, [x = rho*cos(theta)*sin(phi), y = rho*sin(theta)*sin(phi), z = rho*cos(phi)]);
|
| (5.1.1.2) |
Sph >
|
gSph := Pullback(T, gEuc);
|
| (5.1.1.3) |
Calculate the inverse of the metric gSph.
Sph >
|
h := InverseMetric(gSph);
|
| (5.1.1.4) |
Calculate the Christoffel connection for the metric gSph.
Sph >
|
C := Christoffel(gSph);
|
| (5.1.1.5) |
Calculate the covariant derivative of the function f.
Sph >
|
PDEtools:-declare(f(rho, theta, phi));
|
| (5.1.1.6) |
Sph >
|
df := CovariantDerivative(f(rho, theta, phi), C);
|
| (5.1.1.7) |
Calculate the 2nd covariant derivative of the function f.
Sph >
|
d2f := CovariantDerivative(df, C);
|
| (5.1.1.8) |
Calculate the Laplacian of f.
Sph >
|
Lap := ContractIndices(h, d2f, [[1, 1], [2, 2]]);
|
| (5.1.1.9) |
Sph >
|
simplify(Lap, [cos(phi)^2 = 1 - sin(phi)^2]);
|
| (5.1.1.10) |
|
|
|
Exercise 2
|
|
An affine connection nabla on a manifold M is abstractly defined as a mapping (X,Y) -> nabla_X(Y) -- the directional covariant derivative of a vector field Y in the direction of the vector field X. In terms of this definition, the curvature tensor R is defined by
R(X, Y)(Z) = nabla_X(nabla_Y(Z)) - nabla_Y(nabla_X(Z)) - nabla_[X, Y](Z).
Here X, Y and Z are vector fields on M and R(X, Y)(Z) denotes the contraction of R against the vector fields X, Y, Z over the 3rd ,4th and 1st indices respectively. Also, [X, Y] is the Lie bracket of X and Y.
Write a program CheckCurvatureDefinition whose arguments are a connection, its curvature and 3 vector fields and which checks the validity of this definition. Test your program on the following example.
Sph >
|
with(DifferentialGeometry): with(Tensor):
|
Sph >
|
DGsetup([x, y, z], M):
|
M >
|
C := Connection(x^2*dx &t D_y &t dz - y*z*dz &t D_z &t dy);
|
| (5.2.1) |
M >
|
X1, Y1, Z1 := evalDG(x*D_y - y^2*D_z), evalDG(z^2*D_x + x*y*D_y), evalDG(y*z*D_x + z^2*D_z);
|
| (5.2.2) |
|
Solution
|
|
M >
|
CheckCurvatureDefinition := proc(C, R, X, Y, Z)
|
M >
|
local LHS, RHS1, RHS2, RHS3, W, Ans;
|
M >
|
LHS := ContractIndices(Z &tensor X &tensor Y, R, [[1, 2], [2, 3], [3, 4]]);
|
M >
|
RHS1 := DirectionalCovariantDerivative(X, DirectionalCovariantDerivative(Y, Z, C), C);
|
M >
|
RHS2 := DirectionalCovariantDerivative(Y, DirectionalCovariantDerivative(X, Z, C), C);
|
M >
|
W := LieBracket(X, Y);
|
M >
|
RHS3 := DirectionalCovariantDerivative(W, Z, C);
|
M >
|
Ans := evalDG(LHS - (RHS1 - RHS2 - RHS3));
|
M >
|
R := CurvatureTensor(C);
|
| (5.2.1.1) |
M >
|
CheckCurvatureDefinition(C, R, X1, Y1, Z1);
|
| (5.2.1.2) |
|
|
|
Exercise 3
|
|
Check that the curvature tensor (as a rank 4 covariant tensor) for the metric g satisfies the following identities:
[i] skew-symmetric in the indices 1, 2.
[ii] skew-symmetric in the indices 3, 4.
[iii] cyclic permutation of the indices 2, 3, 4 vanishes.
[iv] symmetric under interchange of the indices 1 <--> 3 and 2 <--> 4.
[v] cyclic permutation of the indices 3, 4, 5 of the covariant derivative of R vanishes.
M >
|
with(DifferentialGeometry): with(Tensor):
|
M >
|
DGsetup([x, y, z, w], M):
|
M >
|
g := evalDG(exp(z)*dx &t dx + exp(x)*dy &t dy + exp(w)*dz &t dz + dw &t dw);
|
| (5.3.1) |
|
Solution
|
|
| (5.3.1.1) |
M >
|
R0 := CurvatureTensor(C);
|
| (5.3.1.2) |
M >
|
R := RaiseLowerIndices(g, R0, [1]);
|
| (5.3.1.3) |
Part [i]
M >
|
SymmetrizeIndices(R, [1, 2], "Symmetric");
|
| (5.3.1.4) |
Part [ii]
M >
|
SymmetrizeIndices(R, [3, 4], "Symmetric");
|
| (5.3.1.5) |
Part [iii]
M >
|
SymmetrizeIndices(R, [2, 3, 4], "SkewSymmetric");
|
| (5.3.1.6) |
Part [iv]
M >
|
R &minus RearrangeIndices(R, [[1, 3], [2, 4]]);
|
| (5.3.1.7) |
Part [v]
M >
|
R1 := CovariantDerivative(R, C):
|
M >
|
SymmetrizeIndices(R1, [3, 4, 5], "SkewSymmetric");
|
| (5.3.1.8) |
|
|
|
Exercise 4
|
|
The covariant divergence of the Einstein tensor is identically zero. Check this identity for the metric in Exercise 3.
M >
|
with(DifferentialGeometry): with(Tensor):
|
M >
|
DGsetup([x, y, z, w], M):
|
M >
|
g := evalDG(exp(z)*dx &t dx + exp(x)*dy &t dy + exp(w)*dz &t dz + dw &t dw);
|
| (5.4.1) |
|
Solution
|
|
Calculate the Christoffel connection.
Calculate the curvature tensor.
M >
|
R0 := CurvatureTensor(C):
|
Calculate the Einstein tensor.
M >
|
E := EinsteinTensor(g, R0);
|
| (5.4.1.1) |
Calculate the covariant derivative of the Einstein tensor.
M >
|
dE := CovariantDerivative(E, C);
|
| (5.4.1.2) |
Contract the 2nd and 3rd indices of dE.
M >
|
ContractIndices(dE, [[2, 3]]);
|
| (5.4.1.3) |
|
|
|
Exercise 5
|
|
For what values of a1, a2, a3, a4 does the metric g have vanishing Ricci tensor. (See Stephani, Kramer et. al., page 197.)
M >
|
with(DifferentialGeometry): with(Tensor):
|
M >
|
DGsetup([x1, x2, x3, x4], M):
|
M >
|
G := LinearAlgebra:-DiagonalMatrix([x4^(2*a1), x4^(2*a2), x4^(2*a3), x4^(2*a4)]);
|
| (5.5.1) |
M >
|
g := convert(G, DGtensor, [["cov_bas", "cov_bas"], []]);
|
| (5.5.2) |
|
Solution
|
|
| (5.5.1.1) |
M >
|
R := CurvatureTensor(C);
|
| (5.5.1.2) |
M >
|
Ric := RicciTensor(R);
|
| (5.5.1.3) |
M >
|
Constraints := [a1 + a2 + a3 = a4 + 1, a1^2 + a2^2 + a3^2 = (a4 + 1)^2];
|
| (5.5.1.4) |
M >
|
Tools:-DGmap(1, simplify, Ric, Constraints);
|
| (5.5.1.5) |
|
|
|
Exercise 6
|
|
A vector field is parallel with respect to a connection C if and only if covariant derivative vanishes. The integrability conditions which insure the the existence of a basis of parallel vector fields is given by the vanishing of the curvature tensor.
[i] Check that the curvature tensor of the symmetric connection C vanishes.
[ii] Then use the Maple pdsolve command to find a set of 3 vector fields X1, X2, X3 which are parallel with respect to C and satisfy X1(p) = D_x, X2(p) = D_y, and X3(p) = D_z, where p = [1, 1, 1].
M >
|
with(DifferentialGeometry): with(Tensor):
|
E3 >
|
DGsetup([x, y, z], E3):
|
E3 >
|
C := Connection((1/y)*dx &t D_x &t dy - (1/z)*dx &t D_x &t dz + (1/y)*dy &t D_x &t dx - (1/z)*dy &t D_y &t dz - (1/z)*dz &t D_x &t dx - (1/z)*dz &t D_y &t dy - (2/z)*dz &t D_z &t dz);
|
| (5.6.1) |
|
Solution
|
|
Part [i]
| (5.6.1.1) |
Part [ii]
First create a vector field on E3 with arbitrary coefficients.
E3 >
|
PDEtools:-declare([a, b, c](x, y, z), quiet);
|
E3 >
|
U0 := evalDG(a(x, y, z)*D_x + b(x, y, z)*D_y + c(x, y, z)*D_z);
|
| (5.6.1.2) |
Calculate the covariant derivative of the vector field U0 with respect to the connection C.
E3 >
|
V := CovariantDerivative(U0, C);
|
| (5.6.1.3) |
Solve the partial differential equations obtained by setting the coefficients of the covariant derivatives to 0.
E3 >
|
Eq := Tools:-DGinfo(V, "CoefficientSet");
|
| (5.6.1.4) |
E3 >
|
soln := pdsolve(Eq);
|
| (5.6.1.5) |
Back substitute the solution to the equations Eq into the vector field U0.
E3 >
|
U1 := eval(U0, soln);
|
| (5.6.1.6) |
E3 >
|
U2 := eval(U1, [x = 1, y = 1, z = 1]);
|
| (5.6.1.7) |
Determine the values for _C1, _C2, _C3 to match the initial values specified in the problem.
E3 >
|
X := Tools:-DGsimplify(eval(U1, {_C1 = 0, _C2 = 0, _C3 = 1}));
|
| (5.6.1.8) |
E3 >
|
Y := Tools:-DGsimplify(eval(U1, {_C1 = 0, _C2 = -1, _C3 = 1}));
|
| (5.6.1.9) |
E3 >
|
Z := Tools:-DGsimplify(eval(U1, {_C1 = 1, _C2 = 1, _C3 = -1}));
|
| (5.6.1.10) |
Remark. The Lie brackets of X, Y, and Z all vanish.
E3 >
|
LieBracket(X, Y), LieBracket(X, Z), LieBracket(Y, Z);
|
| (5.6.1.11) |
|
|
|
Exercise 7
|
|
The following exercise appears in Lovelock and Rund, page 178, and also Spivak, page 320.
Let A be a symmetric rank 2 covariant tensor on R^n. Let nabla denote covariant differentiation with respect to the zero connection on R^n and consider the system of PDEs
A = SymmetrizeIndices(nabla(U), [1, 2], symmetric) (*)
The integrability conditions for the equations (*) are
SymmetrizeIndices(nabla(nabla(A), [[1, 3], [2, 4]], skewsymmetric) = 0 (**)
[i] Write a program which checks these integrability conditions.
[ii] Integrate the equations (*) by using two applications of the homotopy operator for the exterior derivative operator.
Use the following tensors to check your programs.
E3 >
|
with(DifferentialGeometry): with(Tensor):
|
E3 >
|
DGsetup([x, y, z], M3):
|
M3 >
|
DGsetup([x, y, z, w], M4):
|
M3 >
|
A1 := evalDG((y + z)*dx &t dz + x*dy &t dz + (y + z)*dz &t dx + x*dz &t dy);
|
| (5.7.1) |
M3 >
|
A2 := evalDG(-2/(x^2 + y^2 + z^2)^2*x*dx &t dx - 1/(x^2 + y^2 + z^2)^2*y*dx &t dy - 1/(x^2 + y^2 + z^2)^2*z*dx &t dz - 1/(x^2 + y^2 + z^2)^2*y*dy &t dx - 1/(x^2 + y^2 + z^2)^2*z*dz &t dx);
|
| (5.7.2) |
M4 >
|
A3 := evalDG(1/2*cos(x)*sin(y)*sin(z)*dx &t dw + 1/2*sin(x)*cos(y)*sin(z)*dy &t dw + 1/2*sin(x)*sin(y)*cos(z)*dz &t dw + 1/2*cos(x)*sin(y)*sin(z)*dw &t dx + 1/2*sin(x)*cos(y)*sin(z)*dw &t dy + 1/2*sin(x)*sin(y)*cos(z)*dw &t dz);
|
| (5.7.3) |
Hint: Here is a program which computes the right-hand side of (*).
M4 >
|
Delta:= (U,C) -> SymmetrizeIndices(CovariantDerivative(U, C), [1, 2], "Symmetric"):
|
|
Solution
|
|
M3 >
|
CheckIntegrability := proc(A, C)
|
M3 >
|
T := CovariantDerivative(CovariantDerivative(A, C), C):
|
M3 >
|
SymmetrizeIndices(SymmetrizeIndices(T, [1, 3], "SkewSymmetric"), [2, 4], "SkewSymmetric");
|
M3 >
|
local Fr, n, B, Omega, T, i, j, alpha, beta, omega, theta, S, U;
|
M3 >
|
Fr := Tools:-DGinfo(A, "ObjectFrame");
|
M3 >
|
n := Tools:-DGinfo(Fr, "FrameBaseDimension");
|
M3 >
|
B := Tools:-DGinfo(Fr, "FrameBaseVectors");
|
M3 >
|
Omega := Tools:-DGinfo(Fr, "FrameBaseForms");
|
M3 >
|
T := CovariantDerivative(A, C);
|
M3 >
|
omega := Tools:-DGzero("form", 2);
|
M3 >
|
for i to n do for j to n do
|
M3 >
|
alpha := ContractIndices(B[i] &tensor B[j], T, [[1, 2], [2, 3]]) &minus ContractIndices(B[j] &tensor B[i], T, [[1, 2], [2, 3]]);
|
M3 >
|
beta := convert(alpha, DGform);
|
M3 >
|
theta := DeRhamHomotopy(beta, args[3 .. -1]);
|
M3 >
|
omega := omega &plus (theta &mult (Omega[i] &wedge Omega[j]));
|
M3 >
|
S := A &plus ((1/2) &mult (convert(omega, DGtensor)));
|
M3 >
|
U := Tools:-DGzero("form", 1);
|
M3 >
|
alpha := ContractIndices(convert(B[i], DGtensor), S, [[1, 1]]);
|
M3 >
|
beta := convert(alpha, DGform);
|
M3 >
|
theta := DeRhamHomotopy(beta, args[3 .. -1]);
|
M3 >
|
U := U &plus (theta &mult (Omega[i]));
|
M3 >
|
convert(U, DGtensor):
|
Part [i]
M3 >
|
C := Connection(0 &mult dx &t D_x &t dx);
|
| (5.7.1.1) |
M3 >
|
CheckIntegrability(A1, C);
|
| (5.7.1.2) |
| (5.7.1.3) |
M3 >
|
A1 &minus Delta(U1, C);
|
| (5.7.1.4) |
Part [ii]
M3 >
|
CheckIntegrability(A2, C);
|
| (5.7.1.5) |
M3 >
|
U2 := Solve(A2, C, integrationlimits = [infinity, 1]);
|
| (5.7.1.6) |
M3 >
|
A2 &minus Delta(U2, C);
|
| (5.7.1.7) |
Part [iii]
M4 >
|
C := Connection(0 &mult dx &t D_x &t dx);
|
| (5.7.1.8) |
| (5.7.1.9) |
M4 >
|
U3 := map(expand, U3);
|
| (5.7.1.10) |
M4 >
|
A3 &minus Delta(U3, C);
|
| (5.7.1.11) |
|
|
|
Exercise 8
|
|
Use the Maple pdsolve command to determine which of the following connections C1, C2, C3 are the Christoffel symbols of a metric.
M4 >
|
with(DifferentialGeometry): with(Tensor):
|
M4 >
|
DGsetup([x, y], E2);
|
| (5.8.1) |
E2 >
|
C1 := Connection(x*dx &t D_y &t dx);
|
| (5.8.2) |
E2 >
|
C2 := Connection(y^2*dx &t D_y &t dx);
|
| (5.8.3) |
E2 >
|
DGsetup([x, y, z], E3);
|
| (5.8.4) |
E3 >
|
C3 := Connection((-1/x)*dx &t D_x &t dx - (1/2/x)*dx &t D_y &t dy - (1/2/z)*dy &t D_x &t dy - (1/2/x)*dy &t D_y &t dx - (1/2/z)*dy &t D_y &t dz - (1/2/x)*dy &t D_z &t dy - (1/2/z)*dz &t D_y &t dy - (1/z)*dz &t D_z &t dz);
|
| (5.8.5) |
|
Solution
|
|
E3 >
|
PDEtools:-declare([a, b, c](x, y), quiet);
|
E2 >
|
g := evalDG(a(x, y)*dx &t dx + 2*b(x, y)*dx &s dy + c(x, y)*dy &t dy);
|
| (5.8.1.1) |
Part 1.
E2 >
|
k1 := CovariantDerivative(g, C1);
|
| (5.8.1.2) |
E2 >
|
Eq1 := Tools:-DGinfo(k1, "CoefficientSet");
|
| (5.8.1.3) |
E2 >
|
soln1 := pdsolve(Eq1);
|
| (5.8.1.4) |
E2 >
|
g1 := eval(g, soln1);
|
| (5.8.1.5) |
| (5.8.1.6) |
Part 2.
E2 >
|
k2 := CovariantDerivative(g, C2);
|
| (5.8.1.7) |
E2 >
|
Eq2 := Tools:-DGinfo(k2, "CoefficientSet");
|
| (5.8.1.8) |
E2 >
|
soln2 := pdsolve(Eq2);
|
| (5.8.1.9) |
E2 >
|
Tools:-DGsimplify(eval(g, soln2));
|
| (5.8.1.10) |
The metric is degenerate so that C2 is not a metric connection.
Part 3.
E2 >
|
vars := [seq(a||i, i = 1 .. 6)](x, y, z):
|
E2 >
|
PDEtools:-declare(vars, quiet);
|
E3 >
|
S := GenerateSymmetricTensors([dx, dy, dz], 2);
|
| (5.8.1.11) |
E3 >
|
g := DGzip(vars, S, "plus");
|
| (5.8.1.12) |
E3 >
|
k3 := CovariantDerivative(g, C3);
|
| (5.8.1.13) |
| (5.8.1.14) |
E3 >
|
Eq3 := Tools:-DGinfo(k3, "CoefficientSet");
|
| (5.8.1.15) |
E3 >
|
soln3 := pdsolve(Eq3);
|
| (5.8.1.16) |
E3 >
|
g3 := Tools:-DGsimplify(eval(g, soln3));
|
| (5.8.1.17) |
| (5.8.1.18) |
|
|
|
Exercise 9
|
|
Check that the metric g is conformally flat. Use pdsolve to find a function sigma such that sigma*g is flat.
M >
|
with(DifferentialGeometry): with(Tensor):
|
M >
|
DGsetup([x, y, z, w], M):
|
M >
|
g := evalDG(dx &t dy + exp(-y)*(dx &s dz) + dy &t dx - dy &t dz - dz &t dy + 1/4*exp(y)*dw &t dw);
|
| (5.9.1) |
|
Solution
|
|
M >
|
R := CurvatureTensor(C):
|
M >
|
DGinfo(R, "CoefficientList", [dx &t D_y &t dy &t dz]);
|
| (5.9.1.1) |
| (5.9.1.2) |
M >
|
PDEtools:-declare(sigma(x, y, z, w));
|
| (5.9.1.3) |
M >
|
k := sigma(x, y, z, w) &mult g;
|
| (5.9.1.4) |
M >
|
R := CurvatureTensor(C):
|
M >
|
Eq := simplify(DGinfo(R, "CoefficientSet")):
|
| (5.9.1.5) |
| (5.9.1.6) |
M >
|
pdetest(sigma(x, y, z, w) = exp(y), Eq);
|
| (5.9.1.7) |
M >
|
gFlat := eval(k, sigma(x, y, z, w) = exp(y));
|
| (5.9.1.8) |
M >
|
C := Christoffel(gFlat);
|
| (5.9.1.9) |
| (5.9.1.10) |
|
|
|
�Ian M. Anderson 2006
|