Application Center - Maplesoft

# Calculating Gaussian Curvature Using Differential Forms

You can switch back to the summary page by clicking here.

Calculating Gaussian Curvature Using Differential Forms

Frank Wang, fwang@lagcc.cuny.edu

Riemannian geometry is customarily developed by tensor methods, which is not necessarily the most computationally efficient approach.  Using the language of differential forms, Elie Cartan's formulation of the Riemannian geometry can be elegantly summarized in two structural equations.  Essentially, the local curvature of the manifold is a measure of how the connection varies from point to point.  This Maple worksheet uses the DifferentialGeometry package to solves three problems in Harley Flanders' book on differential forms to demonstrate the implementation of Cartan's method.

Our discussion follows that of Flanders'.  On a (curved) manifold, we can attach to each point a right-handed orthonormal frames .  As we move from point to point, we expect that the local frame will rotate.  Cartan's first structural equation is

(I)           .

The differentiation (exterior derivative) of the frames is related to the connection 1-form , which connects nearby frames.  Curvature should be given by some 2-forms, which can only be a combination of  and .  The second structure equation defines the curvature 2-form :

(II)          .

The abstract notation above is perhaps quite difficult for students to comprehend.  We will focus on a surface in a three-dimensional Euclidean space (= ) to provide some concrete examples.

Consider a smooth surface Σ in = .  We choose a moving frame  at each point  of Σ in such a way that is the normal to the surface.  Since  is constrained to move in the surface,

where  and  are 1-forms.  It should be clear that the 2-form  represents the element of area of Σ.

From Flanders' book page 41.

The exterior derivative of  can be expressed in terms of ,   But \$=1therefore \$=0.  We have

e2

Similarly,

Imagine that we live on a two-dimensional surface, we will have no knowledge about how varies.  Let's omit writing .  Even if we don't know the normal vector, the Gauss curvature can still be determined from σ1 and σ2, as it is an intrinsic quantity.  In the present case (two dimensions), the curvature two-form is just , since .

In the following, we will use the crucial formula

to calculate the Gauss curvature .

Problem: Set up a frame and the structue equations for a sphere of radius .  Compute the curvatures.

 > restart:

Using spherical coordinates to express the location on a sphere of radius , we have

 > x := R*sin(theta)*cos(phi); y := R*sin(theta)*sin(phi); z := R*cos(theta);
 (1)

We make a 3D plot of such a sphere.

 > plot3d(eval([x , y, z], R=1), theta=0..Pi, phi=0..2*Pi, scaling=constrained);
 > with(LinearAlgebra): with(DifferentialGeometry):

Here we use capital X for the position vector, which should not be confused with the first component of Cartesian coordinates.

 > X := < x | y | z >;
 (2)

Tangent vectors along the  and  directions are the natural choice of bases.

 > v1 := map(diff, X, theta);
 (3)
 > v2 := map(diff, X, phi);
 (4)

Normalizing these two vector fields

 > e1 := simplify(Normalize(v1, Euclidean, conjugate=false)) assuming R>0;
 (5)
 > e2 := simplify(Normalize(v2, Euclidean, conjugate=false)) assuming R>0, theta>0, theta
 (6)

and forming the normal vector

 > e3 := simplify(CrossProduct(e1, e2));
 (7)

we obtain a orthonormal frame.  We set up a manifold (a surface in =)

 > DGsetup([theta, phi], M);
 (8)

then find the exterior derivative of and , denoted by the obvious symbols de1 and de2.

 M > dX := ExteriorDerivative(X);
 (9)
 M > de1 := ExteriorDerivative(e1);
 (10)
 M > de2 := ExteriorDerivative(e2);
 (11)

The connection form ϖ (which we use omega for it below) can be extracted from either de1 or de2.

 M > omega := evalDG(DotProduct(de1, e2, conjugate=false));
 (12)
 M > sigma1 := evalDG(DotProduct(dX, e1, conjugate=false));
 (13)
 M > sigma2 := evalDG(DotProduct(dX, e2, conjugate=false));
 (14)

Once we have the connection form, we find its exterior derivative

 M > dw := ExteriorDerivative(omega);
 (15)

We obtain the Gauss curvature from the formula

 M > K := -GetComponents(dw, [sigma1 &wedge sigma2]);
 (16)

It is not surprising that the Gauss curvature of a sphere of radius  is .

 M > restart:
 >

Problem: Find Gaussian curvature of the surface of revolution obtained by revolving the curve

 > restart:
 > x := cos(theta) + log(tan(theta/2));
 (17)
 > y := sin(theta);
 (18)

Let us first see what this curve looks like.

 > plot([x, y, theta=Pi/2..Pi], scaling=constrained);

The surface of revolution appears as

 > plot3d([x, y*cos(phi), y*sin(phi)], theta=Pi/2..3*Pi/2, phi=0..2*Pi, scaling=constrained);
 > with(LinearAlgebra): with(DifferentialGeometry):

Again, we use capital X for the position vector.

 > X := < x | y*cos(phi) | y*sin(phi) >;
 (19)

The procedure of obtaining an orthonormal frame is similar to that of the previous example.  Actually, we can just copy from there and make minor changes.

 > v1 := simplify(map(diff, X, theta));
 (20)
 > v2 := map(diff, X, phi);
 (21)
 > e1 := simplify(Normalize(v1, Euclidean, conjugate=false)) assuming theta>Pi/2, theta
 (22)
 > e2 := simplify(Normalize(v2, Euclidean, conjugate=false)) assuming theta>Pi/2, theta
 (23)
 > e3 := simplify(CrossProduct(e1, e2));
 (24)
 > DGsetup([theta, phi], M);
 (25)
 M > dX := ExteriorDerivative(X);
 (26)
 M > de1 := ExteriorDerivative(e1);
 (27)
 M > de2 := ExteriorDerivative(e2);
 (28)

Here we obtain the connection form ϖ

 M > omega := evalDG(DotProduct(de1, e2, conjugate=false));
 (29)
 M > sigma1 := evalDG(DotProduct(dX, e1, conjugate=false));
 (30)
 M > sigma2 := evalDG(DotProduct(dX, e2, conjugate=false));
 (31)
 M > dw := ExteriorDerivative(omega);
 (32)

Using the formula , the Gauss curvature is found

 M > K := -GetComponents(dw, [sigma1 &wedge sigma2]);
 (33)

For this surface, the curvature is a constant: .

 M > restart:
 M >
 >

Problem: Given a surface in the form , develop formulas for  and  in terms of  and its partial derivatives.

 > restart:
 > with(LinearAlgebra): with(DifferentialGeometry):

Once again we define the position vector (with capital X) whose components are .

 > X := < x | y | f(x,y) >;
 (34)

We can find two independent tangent vectors on the surface.

 > v1 := map(diff, X, x);
 (35)
 > v2 := map(diff, X, y);
 (36)

We apply the Gram-Schmidt process to construct a set of orthonomal unit vectors e1 and e2.

 > e1 := Normalize(v1, Euclidean, conjugate=false);
 (37)
 > u2 := v2 - DotProduct(v2, e1, conjugate=false)*e1;
 (38)
 > e2 := simplify(Normalize(u2, Euclidean, conjugate=false));
 (39)
 > e3 := simplify(CrossProduct(e1, e2));
 (40)

The rest of the calculation is essentially the same as the previous two examples.

 > DGsetup([x, y], M);
 (41)
 M > dX := ExteriorDerivative(X);
 (42)
 M > de1 := ExteriorDerivative(e1);
 (43)
 M > de2 := ExteriorDerivative(e2);
 (44)
 M > omega := evalDG(DotProduct(de1, e2, conjugate=false));
 (45)
 M > sigma1 := evalDG(DotProduct(dX, e1, conjugate=false));
 (46)
 M > sigma2 := evalDG(DotProduct(dX, e2, conjugate=false));
 (47)
 M > dw := ExteriorDerivative(omega);
 (48)

Using the fact that

 M > K := -GetComponents(dw, [sigma1 &wedge sigma2]);
 (49)

We obtain this formula for  in terms of  and its partial derivatives.

 M > restart:
 >

Reference

Harley Flanders, Differential Forms with Applications wo the Physical Sciences.  New York: Dover Publications (1989).