Parametric Representation of Manifolds

Harry G. Kwatny

Department of Mechanical Engineering & Mechanics
Drexel University

Off[General::spell];
Off[General::spell1];

Introduction

Frequently in applications, important surfaces or manifolds are implicitly defined. It is sometimes useful to generate a parametric representation of these manifolds for graphing or other purposes. TSi ProPac contains functions useful for this purpose. The primary tools are the two functions:
ParametricManifold and EquilibriumSurface
These are are constructed using the functions
ExpMap and FlowComposition.
We will illustrate their use in the following sections. First, load the package:

<< ProPac`

Simple Examples

Implicit and Parametric Representation of the Circle

The unit circle in a plane can be defined by the implicit relation f(x,y)=(x^2)+(y^2)-1=0. The circle can also be characterized parametrically by the mapping theta->{x,y} defined by  x=Cos[theta], y=Sin[theta]. Unfortunately, it is rarely possible to find a global parametric representation of a given implicit manifold. In such a case it is often possible to obtain a local representation. The function ParametricManifold does that. Define:

f1 = {(x^2 + y^2 - 1)};
var1 = {x, y};

Now, we find a local 6th order representation around the point x=1,y=0:

Circ = ParametricManifold[f1, var1, {1, 0}, 6]

Cir[k1_] := Circ[[1]];

and a 10th order representation:

Circ1 = ParametricManifold[f1, var1, {1, 0}, 10]

We can graph these representations of the circle.

\(ParametricPlot[{{Cos[k1], Sin[k1]}, Circ[\([1]\)], 
        Circ1[\([1]\)]}, {k1, \(-Pi\), Pi}, 
      PlotStyle\  -> 
\ \ \ \ \ {{RGBColor[1, \ 0, \ 0], 
            Thickness[0.008]}, {\ RGBColor[0, \ 1, \ 0]}, {\ 
            RGBColor[0, \ 0, \ 1]}}]\)

Notice how the 6th order approximation deteriorates away from the nominal point. The 10th order approximation is quite good.

\(ParametricPlot[{{Cos[k1], Sin[k1]}, Circ[\([1]\)], 
        Circ1[\([1]\)]}, {k1, \(-1.5\)*Pi, 1.5*Pi}, 
      PlotStyle\  -> 
\ \ \ \ \ {{RGBColor[1, \ 0, \ 0], 
            Thickness[0.008]}, \ {RGBColor[0, \ 1, \ 0]}, \ {RGBColor[0, \ 
              0, \ 1]}}, 
      PlotRange -> {{\(-1.5\), 1.5}, {\(-1.5\), 1.5}}]\)

A Surface of Equilibrium Points

Consider the parameter dependent differential equation x' = (x^3)  + mu1 x  + mu0. Equilibria are defined by Feq=0, where

Feq = {x1^3 + mu1*x1 + mu0};

We can find the equilibrium points as a function of parameters with

{Time, Surf} = 
      Timing[EquilibriumSurface[Feq, {x1}, {mu0, mu1}, {0}, {0, 0}, s, 
          3]]

This provides a local representation of the surface around the point x=0, mu0=0, mu1=0 (in this example its global). Now, we can graph the surface of equilibria:

\(ParametricPlot3D[\(Surf[\([1]\)]\)[\([{2, 3, 1}]\)], {s1, \(-2\), 
        2}, {s2, \(-1.5\), 
        1.5}, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PlotPoints -> {25, 
          25}, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ BoxRatios -> {1, 
          1,  .3}, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ AxesEdge -> {None, 
          None, None}, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ViewPoint -> { .25, \(-1\),  .5}, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Boxed -> 
        False]\)

Notice that depending on the values of the parameters mu0 and mu1, there may be 0, 1, or 3 equilibria.

The Method

Summary

The approach is simple in concept. We obtain a system of vector fields that define independent flows on the surface, integrate them and generate a composition starting at the given nominal point. To integrate each vector field we use the exponential map and truncate, hence the results are local.

The Exponential Map

As an example of the flow computation consider the vector field f(x) on (R^3):

f={x1^2+x2,x2,-x3*x2};
x={x1,x2,x3};

The flow can be computed up to finite order in the "time" parameter:

Flow=ExpMap[f,x,s,4]

Composing Flows to form a Surface

<< ProPac`

GeometricTools

FlowComposition

?FlowComposition

Example 1

In this example,we begin with an implicit representation of a manifold and proceed to generate a parameteric representation, step by step.

Feq = {x1^3 + mu1*x1 + mu0};
DF = Jacobian[Feq, {mu0, mu1, x1}]

Fields = SpecialNullSpace[DF]

Flow1 = ExpMap[Fields[[1]], {mu0, mu1, x1}, s, 4]
Flow2 = ExpMap[Fields[[2]], {mu0, mu1, x1}, s, 4]

The parameters can be specified (e.g. p1, p2)

FlowComposition[{Flow1, Flow2}, 
      s, {mu0, mu1, x1}, {0, 0, 0}, {p1, p2}]

or left as the default s1, s2

FlowComposition[{Flow1, Flow2}, 
      s, {mu0, mu1, x1}, {0, 0, 0}]

Sometimes it is convenient to reorder the dependent variables:

f1={s+x1,-s^3-mu1*s+mu0,mu1};f2={x1,-x1*s+mu0,s};Phi={f1,f2};

FlowComposition[Phi,s,{x1,mu0,mu1},{0,0,0}]

Example 2

This example begins with a pair of vector fields. The flows are computed and then composed. In this case, we want a 5th order approximation in the parameters.

gam1={1,-3*x1^2-mu1,0};gam2={x1^3,-x1,1};

ff1=ExpMap[gam1,{x1,mu0,mu1},s,5]

ff2=ExpMap[gam2,{x1,mu0,mu1},s,5]

Phi={ff1,ff2};

FlowComposition[Phi,s,{x1,mu0,mu1},{0,0,0},5]

Some Pitfalls

Example 1: Implicit set is not a regular manifold

Clear[x, y]

f1 = {(x^2 + y^2 - 1)*y};
var1 = {x, y};

The set of points that satisfies f1(x,y)=0 includes the unit circle and the x-axis. It is the union of two regular manifolds, but the points {-1,0} and {1,0} are singular points.

\(ParametricPlot[{{Cos[k1], Sin[k1]}, {k1/4, 0}}, {k1, \(-2\)*Pi, 2*Pi}, 
      PlotStyle\  -> 
\ \ \ \ \ {{RGBColor[1, \ 0, \ 0]}, \ {RGBColor[0, \ 
              1, \ 0]}}]\)

We can easily compute a local parametric approximation around a regular point, say {0,1}:

var1

Man = ParametricManifold[f1, var1, {0, 1}, 4]

But computation at a singular point is meaningless.

Man = ParametricManifold[f1, var1, {1, 0}, 4]

Example 2: redundent defining relations

If the imbedding relations are not independent, the results may still be useful:

f2 = {x + y, (x + y)^2};

ParametricManifold[f2, {x, y}, {0, 0}, 3]

f3 = {x + y + p, (x + y + p)^2}

EquilibriumSurface[f2, {x, y}, {p}, {0, 0}, {0}, s, 3]

A More Complex Example

Longitudinal Dynamics of an Aircraft

<< ProPac`

Feq = {-(1/2) (20.  (-2.045 (((-0.05 + alpha))^3) + alpha) kappa Cos[alpha] - 
                2.  (-0.05 + alpha + dele - 
                      3 (((-0.05 + alpha + dele))^3)) (1 - 
                      kappa) Cos[alpha + dele]), - Cos[alpha] - 
            (1/2) (V^2) (-20.  (-2.045 (((-0.05 + alpha))^3) + alpha) Cos[alpha] - 
                  2.  (-0.05 + alpha + dele - 
                        3 (((-0.05 + alpha + dele))^3)) Cos[
                      alpha + dele] - 
                  0.05 (1 + 
                        400.  (((-2.045 (((-0.05 + alpha))^3) + alpha))^2)) Sin[alpha])};

{TT, ParamMap} = 
      Timing[EquilibriumSurface[
          Feq, {alpha, dele}, {V, kappa}, { .2,  .1}, {0.67276, 0.093009}, 
          kap, 3]]

\(ParametricPlot3D[\(ParamMap[\([1]\)]\)[\([{3, 4, 
            2}]\)], {kap1, \(- .05\),  .1}, {kap2, \(- .05\),  .08}, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PlotPoints -> {25, 
          25}, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ BoxRatios -> {1, 
          1,  .5}, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ViewPoint -> {2, \(- .2\), 1.5}, 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Boxed -> True]\)