DifferentialGeometry Lessons
Lesson 10: Tensor Analysis
Overview
Connections and Christoffel symbols, Torsion tensors
Covariant derivatives
Curvature tensors, Ricci tensor, Ricci scalar, Einstein tensor, Weyl tensor, Cotton tensor
Exercises
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.
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):
DGsetup([x, y], E2):
T := evalDG(y*dx &t D_y &t dy);
T ≔ y⁢dx⁢D_y⁢dy
C := Connection(T);
C ≔ y⁢dx⁢D_y⁢dy
S := TorsionTensor(C);
S ≔ −y⁢dx⁢D_y⁢dy+y⁢dy⁢D_y⁢dx
Remark 1. Although the display for the tensor T and the connection C are the same, the internal representations are different.
Tools:-DGinfo(T, "ObjectType");
tensor
Tools:-DGinfo(C, "ObjectType");
connection
Remark 2. We illustrate the fact that the rules for transforming and Lie differentiating the tensor T and the connection C are different.
X := evalDG(x^3*D_x);
X ≔ x3⁢D_x
Here are the Lie derivatives of T and C.
LieDerivative(X, T);
3⁢x2⁢y⁢dx⁢D_y⁢dy
LieDerivative(X, C);
6⁢x⁢dx⁢D_x⁢dx+3⁢x2⁢y⁢dx⁢D_y⁢dy
Phi := Transformation(E2, E2, [x = 1/x, y = 1/y]);
Φ ≔ x=1x,y=1y
InvPhi := InverseTransformation(Phi);
InvPhi ≔ x=1x,y=1y
Here are the transformations of T and C.
PushPullTensor(Phi, InvPhi, T);
−dx⁢D_y⁢dyy⁢x2
PushPullTensor(Phi, InvPhi, C);
−2⁢dx⁢D_x⁢dxx−dx⁢D_y⁢dyy⁢x2−2⁢dy⁢D_y⁢dyy
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.
g := evalDG((1/y^2)*(dx &t dy + dy &t dx));
g ≔ dx⁢dyy2+dy⁢dxy2
Christoffel(g);
−2⁢dy⁢D_y⁢dyy
C2 := Christoffel(g, "FirstKind");
C2 ≔ −2⁢dy⁢dx⁢dyy3
type(g1, DGmetric);
false
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.
Define a vector field X, a connection C, and tensors T1 and T2.
X := evalDG(a*D_x + b*D_y);
X ≔ a⁢D_x+b⁢D_y
C := Connection(alpha*dx &t D_y &t dy + beta*dy &t D_x &t dx);
C ≔ α⁢dx⁢D_y⁢dy+β⁢dy⁢D_x⁢dx
T1 := evalDG(dx &t D_x);
T1 ≔ dx⁢D_x
T2 := evalDG(f(x, y)*dy &t D_y);
T2 ≔ f⁡x,y⁢dy⁢D_y
Calculate the covariant derivative of T1.
dT1 := CovariantDerivative(T1, C);
dT1 ≔ α⁢dx⁢D_y⁢dy−β⁢dy⁢D_x⁢dx
Calculate the directional derivative of T1.
DirectionalCovariantDerivative(X, T1, C);
α⁢b⁢dx⁢D_y−β⁢a⁢dy⁢D_x
Show that the directional covariant derivative is the contraction of the vector field X with the covariant derivative dT1.
ContractIndices(X, dT1, [[1, 3]]);
Conversely, calculate the covariant derivative dT1 from the directional covariant derivatives of T1 in the coordinate directions.
evalDG((DirectionalCovariantDerivative(D_x, T1, C) &t dx) + (DirectionalCovariantDerivative(D_y, T1, C) &t dy));
α⁢dx⁢D_y⁢dy−β⁢dy⁢D_x⁢dx
Calculate the covariant derivative of T2.
CovariantDerivative(T2, C);
−α⁢f⁡x,y⁢dx⁢D_y⁢dy+β⁢f⁡x,y⁢dy⁢D_x⁢dx+∂∂x⁢f⁡x,y⁢dy⁢D_y⁢dx+∂∂y⁢f⁡x,y⁢dy⁢D_y⁢dy
Connections on vector bundles can also be defined.
DGsetup([x, y ,z], [u, v], E);
frame name: E
C1 := Connection(alpha*dv &t D_v &t dx + beta*du &t D_u &t dy);
C1 ≔ β⁢du⁢D_u⁢dy+α⁢dv⁢D_v⁢dx
Define a tensor field T3 on the vector bundle E and take its covariant derivative.
T3 := evalDG(y*du &t D_v);
T3 ≔ y⁢du⁢D_v
dT3 := CovariantDerivative(T3, C1);
dT3 ≔ α⁢y⁢du⁢D_v⁢dx+−β⁢y+1⁢du⁢D_v⁢dy
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.
T4 := evalDG(x*dx &t D_v);
T4 ≔ x⁢dx⁢D_v
C2 := Connection(gamma*dx &t D_x &t dx);
C2 ≔ γ⁢dx⁢D_x⁢dx
dT4 := CovariantDerivative(T4, C1, C2);
dT4 ≔ α⁢x−γ⁢x+1⁢dx⁢D_v⁢dx
The order in which the connections are specified does not matter.
CovariantDerivative(T4, C2, C1);
α⁢x−γ⁢x+1⁢dx⁢D_v⁢dx
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.
Example 1.
DGsetup([x, y, z], M):
Define a metric g.
g := (1/(k^2 + x^2 + y^2 + z^2)^2) &mult evalDG((dx &t dx + dy &t dy + dz &t dz ));
g ≔ dx⁢dxk2+x2+y2+z22+dy⁢dyk2+x2+y2+z22+dz⁢dzk2+x2+y2+z22
Calculate the Christoffel connection of g.
C := Christoffel(g);
C ≔ −2⁢x⁢dx⁢D_x⁢dxk2+x2+y2+z2−2⁢y⁢dx⁢D_x⁢dyk2+x2+y2+z2−2⁢z⁢dx⁢D_x⁢dzk2+x2+y2+z2+2⁢y⁢dx⁢D_y⁢dxk2+x2+y2+z2−2⁢x⁢dx⁢D_y⁢dyk2+x2+y2+z2+2⁢z⁢dx⁢D_z⁢dxk2+x2+y2+z2−2⁢x⁢dx⁢D_z⁢dzk2+x2+y2+z2−2⁢y⁢dy⁢D_x⁢dxk2+x2+y2+z2+2⁢x⁢dy⁢D_x⁢dyk2+x2+y2+z2−2⁢x⁢dy⁢D_y⁢dxk2+x2+y2+z2−2⁢y⁢dy⁢D_y⁢dyk2+x2+y2+z2−2⁢z⁢dy⁢D_y⁢dzk2+x2+y2+z2+2⁢z⁢dy⁢D_z⁢dyk2+x2+y2+z2−2⁢y⁢dy⁢D_z⁢dzk2+x2+y2+z2−2⁢z⁢dz⁢D_x⁢dxk2+x2+y2+z2+2⁢x⁢dz⁢D_x⁢dzk2+x2+y2+z2−2⁢z⁢dz⁢D_y⁢dyk2+x2+y2+z2+2⁢y⁢dz⁢D_y⁢dzk2+x2+y2+z2−2⁢x⁢dz⁢D_z⁢dxk2+x2+y2+z2−2⁢y⁢dz⁢D_z⁢dyk2+x2+y2+z2−2⁢z⁢dz⁢D_z⁢dzk2+x2+y2+z2
Calculate the curvature tensor for the metric g from its Christoffel symbol C.
R := CurvatureTensor(C);
R ≔ 4⁢k2⁢D_x⁢dy⁢dx⁢dyk2+x2+y2+z22−4⁢k2⁢D_x⁢dy⁢dy⁢dxk2+x2+y2+z22+4⁢k2⁢D_x⁢dz⁢dx⁢dzk2+x2+y2+z22−4⁢k2⁢D_x⁢dz⁢dz⁢dxk2+x2+y2+z22−4⁢k2⁢D_y⁢dx⁢dx⁢dyk2+x2+y2+z22+4⁢k2⁢D_y⁢dx⁢dy⁢dxk2+x2+y2+z22+4⁢k2⁢D_y⁢dz⁢dy⁢dzk2+x2+y2+z22−4⁢k2⁢D_y⁢dz⁢dz⁢dyk2+x2+y2+z22−4⁢k2⁢D_z⁢dx⁢dx⁢dzk2+x2+y2+z22+4⁢k2⁢D_z⁢dx⁢dz⁢dxk2+x2+y2+z22−4⁢k2⁢D_z⁢dy⁢dy⁢dzk2+x2+y2+z22+4⁢k2⁢D_z⁢dy⁢dz⁢dyk2+x2+y2+z22
Calculate the Ricci tensor from the curvature tensor.
RicciTensor(R);
8⁢k2⁢dx⁢dxk2+x2+y2+z22+8⁢k2⁢dy⁢dyk2+x2+y2+z22+8⁢k2⁢dz⁢dzk2+x2+y2+z22
Calculate the Ricci scalar from the metric and its curvature tensor.
RicciScalar(g, R);
24⁢k2
Calculate the Einstein tensor from the metric and its curvature tensor.
EinsteinTensor(g, R);
−4⁢k2⁢k2+x2+y2+z22⁢D_x⁢D_x−4⁢k2⁢k2+x2+y2+z22⁢D_y⁢D_y−4⁢k2⁢k2+x2+y2+z22⁢D_z⁢D_z
Calculate the Cotton tensor from the metric, its Christoffel connection and its curvature. The Cotton tensor vanishes because the metric is conformally flat.
CottonTensor(g, C, R);
0⁢D_x⁢D_x
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.
C := Connection(z^2*dz &t D_y &t dx - x^2*dy &t D_x &t dz);
C ≔ −x2⁢dy⁢D_x⁢dz+z2⁢dz⁢D_y⁢dx
R ≔ −2⁢x⁢D_x⁢dy⁢dx⁢dz+2⁢x⁢D_x⁢dy⁢dz⁢dx+x2⁢z2⁢D_x⁢dz⁢dx⁢dz−x2⁢z2⁢D_x⁢dz⁢dz⁢dx−2⁢z⁢D_y⁢dz⁢dx⁢dz+2⁢z⁢D_y⁢dz⁢dz⁢dx
−2⁢x⁢dy⁢dz+x2⁢z2⁢dz⁢dz
Example 3.
The CurvatureTensor command also computes the curvature tensor of a connection on a vector bundle.
DGsetup([x, y, z], [u, v], E);
C := Connection(z^2*du &t D_v &t dx);
C ≔ z2⁢du⁢D_v⁢dx
CurvatureTensor(C);
−2⁢z⁢D_v⁢du⁢dx⁢dz+2⁢z⁢D_v⁢du⁢dz⁢dx
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.
Solution
Define Cartesian and spherical coordinate systems.
DGsetup([x, y, z], Euc):
DGsetup([rho, theta, phi], Sph):
Define the Euclidean metric on Euc and use the PushPullTensor command to rewrite this metric in spherical coordinates.
gEuc := evalDG(dx &t dx + dy &t dy + dz &t dz);
gEuc ≔ dx⁢dx+dy⁢dy+dz⁢dz
T := Transformation(Sph, Euc, [x = rho*cos(theta)*sin(phi), y = rho*sin(theta)*sin(phi), z = rho*cos(phi)]);
T ≔ x=ρ⁢cos⁡θ⁢sin⁡φ,y=ρ⁢sin⁡θ⁢sin⁡φ,z=ρ⁢cos⁡φ
gSph := Pullback(T, gEuc);
gSph ≔ drho⁢drho+ρ2⁢sin⁡φ2⁢dtheta⁢dtheta+ρ2⁢dphi⁢dphi
Calculate the inverse of the metric gSph.
h := InverseMetric(gSph);
h ≔ D_rho⁢D_rho+D_theta⁢D_thetaρ2⁢sin⁡φ2+D_phi⁢D_phiρ2
Calculate the Christoffel connection for the metric gSph.
C := Christoffel(gSph);
C ≔ drho⁢D_theta⁢dthetaρ+drho⁢D_phi⁢dphiρ−ρ⁢sin⁡φ2⁢dtheta⁢D_rho⁢dtheta+dtheta⁢D_theta⁢drhoρ+cos⁡φ⁢dtheta⁢D_theta⁢dphisin⁡φ−sin⁡φ⁢cos⁡φ⁢dtheta⁢D_phi⁢dtheta−ρ⁢dphi⁢D_rho⁢dphi+cos⁡φ⁢dphi⁢D_theta⁢dthetasin⁡φ+dphi⁢D_phi⁢drhoρ
Calculate the covariant derivative of the function f.
PDEtools:-declare(f(rho, theta, phi));
f⁡ρ,θ,φ⁢will now be displayed as⁢f
df := CovariantDerivative(f(rho, theta, phi), C);
df ≔ fρ⁢drho+fθ⁢dtheta+fφ⁢dphi
Calculate the 2nd covariant derivative of the function f.
d2f := CovariantDerivative(df, C);
d2f ≔ fρ,ρ⁢drho⁢drho+−fθ+fρ,θ⁢ρ⁢drho⁢dthetaρ−fφ−fφ,ρ⁢ρ⁢drho⁢dphiρ+−fθ+fρ,θ⁢ρ⁢dtheta⁢drhoρ+sin⁡φ⁢cos⁡φ⁢fφ+ρ⁢fρ−ρ⁢fρ⁢cos⁡φ2+fθ,θ⁢dtheta⁢dtheta+−cos⁡φ⁢fθ+fφ,θ⁢sin⁡φ⁢dtheta⁢dphisin⁡φ−fφ−fφ,ρ⁢ρ⁢dphi⁢drhoρ+−cos⁡φ⁢fθ+fφ,θ⁢sin⁡φ⁢dphi⁢dthetasin⁡φ+ρ⁢fρ+fφ,φ⁢dphi⁢dphi
Calculate the Laplacian of f.
Lap := ContractIndices(h, d2f, [[1, 1], [2, 2]]);
Lap ≔ −−2⁢ρ⁢fρ+2⁢ρ⁢fρ⁢cos⁡φ2−fφ,φ+fφ,φ⁢cos⁡φ2−sin⁡φ⁢cos⁡φ⁢fφ−fθ,θ−fρ,ρ⁢ρ2+fρ,ρ⁢ρ2⁢cos⁡φ2ρ2⁢sin⁡φ2
simplify(Lap, [cos(phi)^2 = 1 - sin(phi)^2]);
fθ,θ+2⁢ρ⁢fρ+fφ,φ+fρ,ρ⁢ρ2⁢sin⁡φ2+sin⁡φ⁢cos⁡φ⁢fφρ2⁢sin⁡φ2
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.
C := Connection(x^2*dx &t D_y &t dz - y*z*dz &t D_z &t dy);
C ≔ x2⁢dx⁢D_y⁢dz−y⁢z⁢dz⁢D_z⁢dy
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);
X1,Y1,Z1 ≔ x⁢D_y−y2⁢D_z,z2⁢D_x+x⁢y⁢D_y,y⁢z⁢D_x+z2⁢D_z
CheckCurvatureDefinition := proc(C, R, X, Y, Z)
local LHS, RHS1, RHS2, RHS3, W, Ans;
LHS := ContractIndices(Z &tensor X &tensor Y, R, [[1, 2], [2, 3], [3, 4]]);
RHS1 := DirectionalCovariantDerivative(X, DirectionalCovariantDerivative(Y, Z, C), C);
RHS2 := DirectionalCovariantDerivative(Y, DirectionalCovariantDerivative(X, Z, C), C);
W := LieBracket(X, Y);
RHS3 := DirectionalCovariantDerivative(W, Z, C);
Ans := evalDG(LHS - (RHS1 - RHS2 - RHS3));
simplify(Ans):
end:
R ≔ 2⁢x⁢D_y⁢dx⁢dx⁢dz−2⁢x⁢D_y⁢dx⁢dz⁢dx+y⁢D_z⁢dz⁢dy⁢dz−y⁢D_z⁢dz⁢dz⁢dy
CheckCurvatureDefinition(C, R, X1, Y1, Z1);
0⁢D_x
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.
DGsetup([x, y, z, w], M):
g := evalDG(exp(z)*dx &t dx + exp(x)*dy &t dy + exp(w)*dz &t dz + dw &t dw);
g ≔ ⅇz⁢dx⁢dx+ⅇx⁢dy⁢dy+ⅇw⁢dz⁢dz+dw⁢dw
C ≔ dx⁢D_x⁢dz2+dx⁢D_y⁢dy2−12⁢ⅇ−w+z⁢dx⁢D_z⁢dx−12⁢ⅇ−z+x⁢dy⁢D_x⁢dy+dy⁢D_y⁢dx2+dz⁢D_x⁢dx2+dz⁢D_z⁢dw2−12⁢ⅇw⁢dz⁢D_w⁢dz+dw⁢D_z⁢dz2
R0 := CurvatureTensor(C);
R0 ≔ −D_x⁢dz⁢dw⁢dx4+D_y⁢dx⁢dy⁢dz4+D_y⁢dx⁢dx⁢dy4−14⁢ⅇz⁢D_w⁢dx⁢dx⁢dz+14⁢ⅇz⁢D_w⁢dx⁢dz⁢dx+D_y⁢dz⁢dy⁢dx4−D_z⁢dw⁢dz⁢dw4−D_x⁢dw⁢dz⁢dx4+D_x⁢dw⁢dx⁢dz4−D_y⁢dx⁢dz⁢dy4−D_x⁢dz⁢dx⁢dz4−14⁢ⅇ−w+x⁢D_z⁢dy⁢dy⁢dx−D_y⁢dz⁢dx⁢dy4+D_x⁢dz⁢dx⁢dw4−D_y⁢dx⁢dy⁢dx4+D_z⁢dw⁢dw⁢dz4+D_x⁢dz⁢dz⁢dx4+14⁢ⅇw⁢D_w⁢dz⁢dz⁢dw+14⁢ⅇ−z+x⁢D_x⁢dy⁢dy⁢dx−14⁢ⅇ−z+x⁢D_x⁢dy⁢dy⁢dz−14⁢ⅇ−z+x⁢D_x⁢dy⁢dx⁢dy−14⁢ⅇw⁢D_w⁢dz⁢dw⁢dz+14⁢ⅇ−w+z⁢D_z⁢dx⁢dw⁢dx+14⁢ⅇ−w+x⁢D_z⁢dy⁢dx⁢dy−14⁢ⅇ−w+z⁢D_z⁢dx⁢dx⁢dw−14⁢ⅇ−w+z⁢D_z⁢dx⁢dz⁢dx+14⁢ⅇ−z+x⁢D_x⁢dy⁢dz⁢dy+14⁢ⅇ−w+z⁢D_z⁢dx⁢dx⁢dz
R := RaiseLowerIndices(g, R0, [1]);
R ≔ −14⁢ⅇx⁢dx⁢dy⁢dx⁢dy+14⁢ⅇx⁢dx⁢dy⁢dy⁢dx−14⁢ⅇx⁢dz⁢dy⁢dy⁢dx−14⁢ⅇw⁢dz⁢dw⁢dz⁢dw+14⁢ⅇw⁢dz⁢dw⁢dw⁢dz−14⁢ⅇz⁢dw⁢dx⁢dx⁢dz+14⁢ⅇz⁢dw⁢dx⁢dz⁢dx+14⁢ⅇw⁢dw⁢dz⁢dz⁢dw−14⁢ⅇw⁢dw⁢dz⁢dw⁢dz−14⁢ⅇz⁢dz⁢dx⁢dz⁢dx+14⁢ⅇz⁢dz⁢dx⁢dw⁢dx+14⁢ⅇx⁢dz⁢dy⁢dx⁢dy+14⁢ⅇx⁢dy⁢dz⁢dy⁢dx+14⁢ⅇz⁢dz⁢dx⁢dx⁢dz−14⁢ⅇz⁢dz⁢dx⁢dx⁢dw+14⁢ⅇz⁢dx⁢dz⁢dx⁢dw+14⁢ⅇz⁢dx⁢dz⁢dz⁢dx−14⁢ⅇz⁢dx⁢dz⁢dw⁢dx+14⁢ⅇz⁢dx⁢dw⁢dx⁢dz−14⁢ⅇz⁢dx⁢dw⁢dz⁢dx+14⁢ⅇx⁢dy⁢dx⁢dx⁢dy−14⁢ⅇx⁢dy⁢dx⁢dy⁢dx+14⁢ⅇx⁢dy⁢dx⁢dy⁢dz−14⁢ⅇx⁢dy⁢dx⁢dz⁢dy−14⁢ⅇx⁢dy⁢dz⁢dx⁢dy−14⁢ⅇx⁢dx⁢dy⁢dy⁢dz+14⁢ⅇx⁢dx⁢dy⁢dz⁢dy−14⁢ⅇz⁢dx⁢dz⁢dx⁢dz
Part [i]
SymmetrizeIndices(R, [1, 2], "Symmetric");
0⁢dx⁢dx⁢dx⁢dx
Part [ii]
SymmetrizeIndices(R, [3, 4], "Symmetric");
Part [iii]
SymmetrizeIndices(R, [2, 3, 4], "SkewSymmetric");
Part [iv]
R &minus RearrangeIndices(R, [[1, 3], [2, 4]]);
Part [v]
R1 := CovariantDerivative(R, C):
SymmetrizeIndices(R1, [3, 4, 5], "SkewSymmetric");
0⁢dx⁢dx⁢dx⁢dx⁢dx
Exercise 4
The covariant divergence of the Einstein tensor is identically zero. Check this identity for the metric in Exercise 3.
Calculate the Christoffel connection.
C := Christoffel(g):
Calculate the curvature tensor.
R0 := CurvatureTensor(C):
Calculate the Einstein tensor.
E := EinsteinTensor(g, R0);
E ≔ 14⁢ⅇ−z⁢D_x⁢D_x+14⁢ⅇ−z−w⁢D_x⁢D_z+14⁢ⅇ−x+14⁢ⅇ−x−w⁢D_y⁢D_y+14⁢ⅇ−z−w⁢D_z⁢D_x+14⁢ⅇ−z−w⁢D_z⁢D_z+14⁢ⅇ−w⁢D_z⁢D_w+14⁢ⅇ−w⁢D_w⁢D_z+14⁢ⅇ−w+14⁢ⅇ−z⁢D_w⁢D_w
Calculate the covariant derivative of the Einstein tensor.
dE := CovariantDerivative(E, C);
dE ≔ 14⁢ⅇ−z−w⁢D_x⁢D_x⁢dx−18⁢ⅇ−z−w⁢D_x⁢D_y⁢dy+18⁢ⅇ−z−w−18⁢ⅇ−w⁢D_x⁢D_z⁢dx−18⁢ⅇ−z−w⁢D_x⁢D_z⁢dz−18⁢ⅇ−z−w⁢D_x⁢D_z⁢dw+18⁢ⅇ−w⁢D_x⁢D_w⁢dx−18⁢ⅇ−z⁢D_x⁢D_w⁢dz−18⁢ⅇ−z−w⁢D_y⁢D_x⁢dy−14⁢ⅇ−x−w⁢D_y⁢D_y⁢dw+18⁢ⅇ−z−w⁢D_y⁢D_z⁢dy+18⁢ⅇ−z−w−18⁢ⅇ−w⁢D_z⁢D_x⁢dx−18⁢ⅇ−z−w⁢D_z⁢D_x⁢dz−18⁢ⅇ−z−w⁢D_z⁢D_x⁢dw+18⁢ⅇ−z−w⁢D_z⁢D_y⁢dy−14⁢ⅇ−2⁢w⁢D_z⁢D_z⁢dx+14⁢ⅇ−w−14⁢ⅇ−z−w⁢D_z⁢D_z⁢dz+18⁢ⅇ−w⁢D_z⁢D_w⁢dz−18⁢ⅇ−w⁢D_z⁢D_w⁢dw+18⁢ⅇ−w⁢D_w⁢D_x⁢dx−18⁢ⅇ−z⁢D_w⁢D_x⁢dz+18⁢ⅇ−w⁢D_w⁢D_z⁢dz−18⁢ⅇ−w⁢D_w⁢D_z⁢dw+−14−14⁢ⅇ−z⁢D_w⁢D_w⁢dz−14⁢ⅇ−w⁢D_w⁢D_w⁢dw
Contract the 2nd and 3rd indices of dE.
ContractIndices(dE, [[2, 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.)
DGsetup([x1, x2, x3, x4], M):
G := LinearAlgebra:-DiagonalMatrix([x4^(2*a1), x4^(2*a2), x4^(2*a3), x4^(2*a4)]);
g := convert(G, DGtensor, [["cov_bas", "cov_bas"], []]);
g ≔ x42⁢a1⁢dx1⁢dx1+x42⁢a2⁢dx2⁢dx2+x42⁢a3⁢dx3⁢dx3+x42⁢a4⁢dx4⁢dx4
C ≔ a1⁢dx1⁢D_x1⁢dx4x4−x4−2⁢a4+2⁢a1−1⁢a1⁢dx1⁢D_x4⁢dx1+a2⁢dx2⁢D_x2⁢dx4x4−x4−2⁢a4+2⁢a2−1⁢a2⁢dx2⁢D_x4⁢dx2+a3⁢dx3⁢D_x3⁢dx4x4−x4−2⁢a4+2⁢a3−1⁢a3⁢dx3⁢D_x4⁢dx3+a1⁢dx4⁢D_x1⁢dx1x4+a2⁢dx4⁢D_x2⁢dx2x4+a3⁢dx4⁢D_x3⁢dx3x4+a4⁢dx4⁢D_x4⁢dx4x4
R ≔ −a1⁢x4−2⁢a4+2⁢a2−2⁢a2⁢D_x1⁢dx2⁢dx1⁢dx2+a1⁢x4−2⁢a4+2⁢a2−2⁢a2⁢D_x1⁢dx2⁢dx2⁢dx1−a1⁢x4−2⁢a4+2⁢a3−2⁢a3⁢D_x1⁢dx3⁢dx1⁢dx3+a1⁢x4−2⁢a4+2⁢a3−2⁢a3⁢D_x1⁢dx3⁢dx3⁢dx1−a1⁢−a4+a1−1⁢D_x1⁢dx4⁢dx1⁢dx4x42+a1⁢−a4+a1−1⁢D_x1⁢dx4⁢dx4⁢dx1x42+a2⁢x4−2⁢a4+2⁢a1−2⁢a1⁢D_x2⁢dx1⁢dx1⁢dx2−a2⁢x4−2⁢a4+2⁢a1−2⁢a1⁢D_x2⁢dx1⁢dx2⁢dx1−a2⁢x4−2⁢a4+2⁢a3−2⁢a3⁢D_x2⁢dx3⁢dx2⁢dx3+a2⁢x4−2⁢a4+2⁢a3−2⁢a3⁢D_x2⁢dx3⁢dx3⁢dx2−a2⁢−a4+a2−1⁢D_x2⁢dx4⁢dx2⁢dx4x42+a2⁢−a4+a2−1⁢D_x2⁢dx4⁢dx4⁢dx2x42+a3⁢x4−2⁢a4+2⁢a1−2⁢a1⁢D_x3⁢dx1⁢dx1⁢dx3−a3⁢x4−2⁢a4+2⁢a1−2⁢a1⁢D_x3⁢dx1⁢dx3⁢dx1+a3⁢x4−2⁢a4+2⁢a2−2⁢a2⁢D_x3⁢dx2⁢dx2⁢dx3−a3⁢x4−2⁢a4+2⁢a2−2⁢a2⁢D_x3⁢dx2⁢dx3⁢dx2−a3⁢−a4+a3−1⁢D_x3⁢dx4⁢dx3⁢dx4x42+a3⁢−a4+a3−1⁢D_x3⁢dx4⁢dx4⁢dx3x42+x4−2⁢a4+2⁢a1−2⁢a1⁢−a4+a1−1⁢D_x4⁢dx1⁢dx1⁢dx4−x4−2⁢a4+2⁢a1−2⁢a1⁢−a4+a1−1⁢D_x4⁢dx1⁢dx4⁢dx1+x4−2⁢a4+2⁢a2−2⁢a2⁢−a4+a2−1⁢D_x4⁢dx2⁢dx2⁢dx4−x4−2⁢a4+2⁢a2−2⁢a2⁢−a4+a2−1⁢D_x4⁢dx2⁢dx4⁢dx2+x4−2⁢a4+2⁢a3−2⁢a3⁢−a4+a3−1⁢D_x4⁢dx3⁢dx3⁢dx4−x4−2⁢a4+2⁢a3−2⁢a3⁢−a4+a3−1⁢D_x4⁢dx3⁢dx4⁢dx3
Ric := RicciTensor(R);
Ric ≔ −x4−2⁢a4+2⁢a1−2⁢a1⁢−a4+a1−1+a3+a2⁢dx1⁢dx1−x4−2⁢a4+2⁢a2−2⁢a2⁢−a4+a1−1+a3+a2⁢dx2⁢dx2−x4−2⁢a4+2⁢a3−2⁢a3⁢−a4+a1−1+a3+a2⁢dx3⁢dx3−−a3⁢a4+a32−a3−a2⁢a4+a22−a2−a1⁢a4+a12−a1⁢dx4⁢dx4x42
Constraints := [a1 + a2 + a3 = a4 + 1, a1^2 + a2^2 + a3^2 = (a4 + 1)^2];
Constraints ≔ a1+a2+a3=a4+1,a12+a22+a32=a4+12
Tools:-DGmap(1, simplify, Ric, Constraints);
0⁢dx1⁢dx1
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 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].
DGsetup([x, y, z], 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);
C ≔ dx⁢D_x⁢dyy−dx⁢D_x⁢dzz+dy⁢D_x⁢dxy−dy⁢D_y⁢dzz−dz⁢D_x⁢dxz−dz⁢D_y⁢dyz−2⁢dz⁢D_z⁢dzz
0⁢D_x⁢dx⁢dx⁢dx
First create a vector field on E3 with arbitrary coefficients.
PDEtools:-declare([a, b, c](x, y, z), quiet);
U0 := evalDG(a(x, y, z)*D_x + b(x, y, z)*D_y + c(x, y, z)*D_z);
U0 ≔ a⁢D_x+b⁢D_y+c⁢D_z
Calculate the covariant derivative of the vector field U0 with respect to the connection C.
V := CovariantDerivative(U0, C);
V ≔ −c⁢y+z⁢b+z⁢ax⁢y⁢D_x⁢dxy⁢z+a+ay⁢y⁢D_x⁢dyy−a−az⁢z⁢D_x⁢dzz+bx⁢D_y⁢dx+−c+by⁢z⁢D_y⁢dyz−b−bz⁢z⁢D_y⁢dzz+cx⁢D_z⁢dx+cy⁢D_z⁢dy−2⁢c−cz⁢z⁢D_z⁢dzz
Solve the partial differential equations obtained by setting the coefficients of the covariant derivatives to 0.
Eq := Tools:-DGinfo(V, "CoefficientSet");
Eq ≔ bx,cx,cy,a+ay⁢yy,−c+by⁢zz,−c⁢y+z⁢b+z⁢ax⁢yy⁢z,−a−az⁢zz,−b−bz⁢zz,−2⁢c−cz⁢zz
soln := pdsolve(Eq);
soln ≔ a=_C2⁢x+_C3⁢zy,b=z⁢_C1⁢y−_C2,c=_C1⁢z2
Back substitute the solution to the equations Eq into the vector field U0.
U1 := eval(U0, soln);
U1 ≔ _C2⁢x+_C3⁢z⁢D_xy+z⁢_C1⁢y−_C2⁢D_y+_C1⁢z2⁢D_z
U2 := eval(U1, [x = 1, y = 1, z = 1]);
U2 ≔ _C2+_C3⁢D_x+_C1−_C2⁢D_y+_C1⁢D_z
Determine the values for _C1, _C2, _C3 to match the initial values specified in the problem.
X := Tools:-DGsimplify(eval(U1, {_C1 = 0, _C2 = 0, _C3 = 1}));
X ≔ z⁢D_xy
Y := Tools:-DGsimplify(eval(U1, {_C1 = 0, _C2 = -1, _C3 = 1}));
Y ≔ −x−1⁢z⁢D_xy+z⁢D_y
Z := Tools:-DGsimplify(eval(U1, {_C1 = 1, _C2 = 1, _C3 = -1}));
Z ≔ x−1⁢z⁢D_xy+z⁢y−1⁢D_y+z2⁢D_z
Remark. The Lie brackets of X, Y, and Z all vanish.
LieBracket(X, Y), LieBracket(X, Z), LieBracket(Y, Z);
0⁢D_x,0⁢D_x,0⁢D_x
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.
DGsetup([x, y, z], M3):
DGsetup([x, y, z, w], M4):
ChangeFrame(M3):
A1 := evalDG((y + z)*dx &t dz + x*dy &t dz + (y + z)*dz &t dx + x*dz &t dy);
A1 ≔ y+z⁢dx⁢dz+x⁢dy⁢dz+y+z⁢dz⁢dx+x⁢dz⁢dy
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);
A2 ≔ −2⁢x⁢dx⁢dxx2+y2+z22−y⁢dx⁢dyx2+y2+z22−z⁢dx⁢dzx2+y2+z22−y⁢dy⁢dxx2+y2+z22−z⁢dz⁢dxx2+y2+z22
ChangeFrame(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);
A3 ≔ 12⁢cos⁡x⁢sin⁡y⁢sin⁡z⁢dx⁢dw+12⁢sin⁡x⁢cos⁡y⁢sin⁡z⁢dy⁢dw+12⁢sin⁡x⁢sin⁡y⁢cos⁡z⁢dz⁢dw+12⁢cos⁡x⁢sin⁡y⁢sin⁡z⁢dw⁢dx+12⁢sin⁡x⁢cos⁡y⁢sin⁡z⁢dw⁢dy+12⁢sin⁡x⁢sin⁡y⁢cos⁡z⁢dw⁢dz
Hint: Here is a program which computes the right-hand side of (*).
Delta:= (U,C) -> SymmetrizeIndices(CovariantDerivative(U, C), [1, 2], "Symmetric"):
CheckIntegrability := proc(A, C)
local T;
T := CovariantDerivative(CovariantDerivative(A, C), C):
SymmetrizeIndices(SymmetrizeIndices(T, [1, 3], "SkewSymmetric"), [2, 4], "SkewSymmetric");
Solve := proc(A, C)
local Fr, n, B, Omega, T, i, j, alpha, beta, omega, theta, S, U;
Fr := Tools:-DGinfo(A, "ObjectFrame");
n := Tools:-DGinfo(Fr, "FrameBaseDimension");
B := Tools:-DGinfo(Fr, "FrameBaseVectors");
Omega := Tools:-DGinfo(Fr, "FrameBaseForms");
T := CovariantDerivative(A, C);
omega := Tools:-DGzero("form", 2);
for i to n do for j to n do
alpha := ContractIndices(B[i] &tensor B[j], T, [[1, 2], [2, 3]]) &minus ContractIndices(B[j] &tensor B[i], T, [[1, 2], [2, 3]]);
beta := convert(alpha, DGform);
theta := DeRhamHomotopy(beta, args[3 .. -1]);
omega := omega &plus (theta &mult (Omega[i] &wedge Omega[j]));
od;
S := A &plus ((1/2) &mult (convert(omega, DGtensor)));
U := Tools:-DGzero("form", 1);
for i to n do
alpha := ContractIndices(convert(B[i], DGtensor), S, [[1, 1]]);
U := U &plus (theta &mult (Omega[i]));
od:
convert(U, DGtensor):
C := Connection(0 &mult dx &t D_x &t dx);
C ≔ 0⁢dx⁢D_x⁢dx
CheckIntegrability(A1, C);
U1 := Solve(A1, C);
U1 ≔ z2⁢dx+2⁢x⁢y⁢dz
A1 &minus Delta(U1, C);
0⁢dx⁢dx
CheckIntegrability(A2, C);
U2 := Solve(A2, C, integrationlimits = [infinity, 1]);
U2 ≔ dxx2+y2+z2
A2 &minus Delta(U2, C);
U3 := Solve(A3, C);
U3 ≔ 14⁢sin⁡−z+x+y+14⁢sin⁡z+x−y−14⁢sin⁡−z+x−y−14⁢sin⁡z+x+y⁢dw
U3 := map(expand, U3);
U3 ≔ sin⁡x⁢sin⁡y⁢sin⁡z⁢dw
A3 &minus Delta(U3, C);
Exercise 8
Use the Maple pdsolve command to determine which of the following connections C1, C2, C3 are the Christoffel symbols of a metric.
DGsetup([x, y], E2);
frame name: E2
C1 := Connection(x*dx &t D_y &t dx);
C1 ≔ x⁢dx⁢D_y⁢dx
C2 := Connection(y^2*dx &t D_y &t dx);
C2 ≔ y2⁢dx⁢D_y⁢dx
DGsetup([x, y, z], E3);
frame name: 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);
C3 ≔ −dx⁢D_x⁢dxx−dx⁢D_y⁢dy2⁢x−dy⁢D_x⁢dy2⁢z−dy⁢D_y⁢dx2⁢x−dy⁢D_y⁢dz2⁢z−dy⁢D_z⁢dy2⁢x−dz⁢D_y⁢dy2⁢z−dz⁢D_z⁢dzz
PDEtools:-declare([a, b, c](x, y), quiet);
ChangeFrame(E2):
g := evalDG(a(x, y)*dx &t dx + 2*b(x, y)*dx &s dy + c(x, y)*dy &t dy);
g ≔ a⁢dx⁢dx+2⁢b⁢dx⁢dy+2⁢b⁢dy⁢dx+c⁢dy⁢dy
Part 1.
k1 := CovariantDerivative(g, C1);
k1 ≔ −4⁢x⁢b+ax⁢dx⁢dx⁢dx+ay⁢dx⁢dx⁢dy+−x⁢c+2⁢bx⁢dx⁢dy⁢dx+2⁢by⁢dx⁢dy⁢dy+−x⁢c+2⁢bx⁢dy⁢dx⁢dx+2⁢by⁢dy⁢dx⁢dy+cx⁢dy⁢dy⁢dx+cy⁢dy⁢dy⁢dy
Eq1 := Tools:-DGinfo(k1, "CoefficientSet");
Eq1 ≔ ay,cx,cy,2⁢by,−4⁢x⁢b+ax,−x⁢c+2⁢bx
soln1 := pdsolve(Eq1);
soln1 ≔ a=_C1⁢x44+_C2⁢x22+_C3,b=x2⁢_C14+_C24,c=_C1
g1 := eval(g, soln1);
g1 ≔ _C1⁢x44+_C2⁢x22+_C3⁢dx⁢dx+x2⁢_C12+_C22⁢dx⁢dy+x2⁢_C12+_C22⁢dy⁢dx+_C1⁢dy⁢dy
Christoffel(g1);
x⁢dx⁢D_y⁢dx
Part 2.
k2 := CovariantDerivative(g, C2);
k2 ≔ −4⁢y2⁢b+ax⁢dx⁢dx⁢dx+ay⁢dx⁢dx⁢dy+−y2⁢c+2⁢bx⁢dx⁢dy⁢dx+2⁢by⁢dx⁢dy⁢dy+−y2⁢c+2⁢bx⁢dy⁢dx⁢dx+2⁢by⁢dy⁢dx⁢dy+cx⁢dy⁢dy⁢dx+cy⁢dy⁢dy⁢dy
Eq2 := Tools:-DGinfo(k2, "CoefficientSet");
Eq2 ≔ ay,cx,cy,2⁢by,−4⁢y2⁢b+ax,−y2⁢c+2⁢bx
soln2 := pdsolve(Eq2);
soln2 ≔ a=_C1,b=0,c=0
Tools:-DGsimplify(eval(g, soln2));
_C1⁢dx⁢dx
The metric is degenerate so that C2 is not a metric connection.
Part 3.
vars := [seq(a||i, i = 1 .. 6)](x, y, z):
PDEtools:-declare(vars, quiet);
ChangeFrame(E3):
S := GenerateSymmetricTensors([dx, dy, dz], 2);
S ≔ dx⁢dx,dx⁢dy2+dy⁢dx2,dx⁢dz2+dz⁢dx2,dy⁢dy,dy⁢dz2+dz⁢dy2,dz⁢dz
g := DGzip(vars, S, "plus");
g ≔ a1⁢dx⁢dx+a2⁢dx⁢dy2+a3⁢dx⁢dz2+a2⁢dy⁢dx2+a4⁢dy⁢dy+a5⁢dy⁢dz2+a3⁢dz⁢dx2+a5⁢dz⁢dy2+a6⁢dz⁢dz
k3 := CovariantDerivative(g, C3);
k3 ≔ 12⁢a5+2⁢a6y⁢z⁢dz⁢dz⁢dyz+a4+a4x⁢x⁢dy⁢dy⁢dxx+14⁢2⁢a6⁢z+2⁢x⁢a4+x⁢a3+2⁢x⁢a5y⁢z⁢dy⁢dz⁢dyx⁢z+2⁢a6+a6z⁢z⁢dz⁢dz⁢dzz+14⁢3⁢a5+2⁢a5z⁢z⁢dy⁢dz⁢dzz+14⁢a2⁢x+z⁢a5+2⁢z⁢a3y