PITCON7
The Continuation Method


PITCON7 is a FORTRAN90 library which implements the continuation method for systems of nonlinear equations.

The program is designed for problems in which N variables X are constrained by N-1 nonlinear equations, which we may write as

F(X) = 0
Generally, there is an entire family of solutions to such a problem, which can be thought of as an implicitly defined curve in N-dimensional space. We might write this as X(LAMBDA), where LAMBDA is often thought of as arc length. However, we only mention this in order to suggest that the solution points form a curve. The parameterizing variable LAMBDA is not practically computable or necessary to know (and the actual structure of the X solutions could be more complicated than we suggest here.)

Given one solution point on this curve (an approximate value will do), PITCON attempts to follow the curve of solutions that passes through that point, and to produce further solutions along the curve. The program can be instructed to watch out for "target points", that is, points on the solution curve for which one of the variables attains a special value, and "limit points", for which some variable attains an extreme value.

As a simple but tricky example, we mention the Freudenstein-Roth function, which has the form:

        FX(1) = X1 - X2*X2*X2 + 5*X2*X2 -  2*X2 - 13 + 34*(X3-1)
        FX(2) = X1 + X2*X2*X2 +   X2*X2 - 14*X2 - 29 + 10*(X3-1)
      
A suitable starting point is (15,-2,0). The program is typically asked to find a target point for which the X3 coordinate is 1, and to watch out for limit points in the first or third variables. Generally, the program will discover the target point (5,4,1), and will, if asked, also spot limit points in X1 at:
        (14.28309, -1.741377,  0.2585779)
         and
        (61.66936,  1.983801, -0.6638797)
      
or limit points for the third variable, which occur at:
        (20.48586, -0.8968053, 0.5875873)
         and
        (61.02031,  2.230139, -0.6863528)
      
If you have the program take small steps, so that you get a good image of the solution curve, you will see that there are a pair of hairpin turns along the path!

If PITCON is allowed to take fairly large steps, a typical sequence of solution points might be:

        15.0000      -2.00000      0.000000E+00
        14.7105      -1.94205      0.653814E-01
        14.2846      -1.72915      0.268742
        16.9061      -1.20941      0.546845
        24.9179     -0.599064      0.555136
        34.8981     -0.405153E-01  0.353312
        44.8809      0.487811      0.594414E-01
        54.8607       1.09476     -0.304459
        61.3810       1.81339     -0.624499
       -48.6139       4.67873       2.88055
        5.00000       4.00000       1.00000
       
Note that when the program computes the solution with X3 = 2.88055, it realizes that is has passed a target point where X3 = 1, so that it actually "goes back" and determines where that point lies.

An earlier version of PITCON is available as an ACM TOMS algorithm 596, through the NETLIB web site.

Licensing:

The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.

Languages:

PITCON7 is available in a FORTRAN90 version.

Related Data and Programs:

CONTINUATION, a MATLAB library which implements the continuation method for a simple 2D problem, which involves finding a point on the unit circle, and then finding a sequence of nearby points which trace out the full curve, using only the information available in the implicit definition of the curve from the function f(x,y)=x^2+y^2-1.

PITCON66, a FORTRAN77 library which seeks to produce a sequence of points that satisfy a set of nonlinear equations with one degree of freedom; this is version 6.6 of PITCON.

TEST_CON, a FORTRAN90 library which implements test problems for numerical continuation.

TOMS502, a FORTRAN77 library which seeks to produce a sequence of points that satisfy a set of nonlinear equations with one degree of freedom; this library is commonly called DERPAR;
this is ACM TOMS algorithm 502.

TOMS596, a FORTRAN77 library which seeks to produce a sequence of points that satisfy a set of nonlinear equations with one degree of freedom; this library is commonly called PITCON;
this is ACM TOMS algorithm 596.

Authors:

Professor Werner Rheinboldt,
John Burkardt

Reference:

  1. Edward Anderson, Zhaojun Bai, Christian Bischof, Susan Blackford, James Demmel, Jack Dongarra, Jeremy DuCroz, Anne Greenbaum, Sven Hammarling, Alan McKenney, Danny Sorensen,
    LAPACK User's Guide,
    Third Edition,
    SIAM, 1999,
    ISBN: 0898714478,
    LC: QA76.73.F25L36.
  2. Ivo Babuska, Werner Rheinboldt,
    Reliable Error Estimations and Mesh Adaptation for the Finite Element Method,
    in International Conference on Computational Methods in Nonlinear Mechanics,
    edited by John Oden,
    Elsevier, 1980,
    ISBN: 0444853820,
    LC: QA808.I57.
  3. Richard Brent,
    Algorithms for Minimization without Derivatives,
    Dover, 2002,
    ISBN: 0-486-41998-3,
    LC: QA402.5.B74.
  4. Tony Chan,
    Deflated Decomposition of Solutions of Nearly Singular Systems,
    Technical Report 225,
    Computer Science Department,
    Yale University, 1982.
  5. Cor denHeijer, Werner Rheinboldt,
    On Steplength Algorithms for a Class of Continuation Methods,
    SIAM Journal on Numerical Analysis,
    Volume 18, Number 5, October 1981, pages 925-947.
  6. Ferdinand Freudenstein, Bernhard Roth,
    Numerical Solutions of Nonlinear Equations,
    Journal of the ACM,
    Volume 10, Number 4, October 1963, pages 550-556.
  7. Herbert Keller,
    Numerical Methods for Two-point Boundary Value Problems,
    Dover, 1992,
    ISBN: 0486669254,
    LC: QA372.K42.
  8. Raman Mehra, William Kessel, James Carroll,
    Global stability and contral analysis of aircraft at high angles of attack,
    Technical Report CR-215-248-1, -2, -3,
    Office of Naval Research, June 1977.
  9. Rami Melhem, Werner Rheinboldt,
    A Comparison of Methods for Determining Turning Points of Nonlinear Equations,
    Computing,
    Volume 29, Number 3, September 1982, pages 201-226.
  10. John Oden,
    Finite Elements of Nonlinear Continua,
    Dover, 2006,
    ISBN: 0486449734,
    LC: QA808.2.O33.
  11. Werner Rheinboldt,
    On the Solution of Some Nonlinear Equations Arising in the Application of Finite Element Methods,
    in The Mathematics of Finite Elements and Applications II,
    edited by John Whiteman,
    Academic Press, 1976,
    LC: TA347.F5.M37.
  12. Werner Rheinboldt,
    Solution Field of Nonlinear Equations and Continuation Methods,
    SIAM Journal on Numerical Analysis,
    Volume 17, Number 2, April 1980, pages 221-237.
  13. Werner Rheinboldt,
    Numerical Analysis of Continuation Methods for Nonlinear Structural Problems,
    Computers and Structures,
    Volume 13, 1981, pages 103-114.
  14. Werner Rheinboldt,
    Computation of Critical Boundaries on Equilibrium Manifolds,
    SIAM Journal on Numerical analysis,
    Volume 19, Number 3, June 1982, pages 653-669.
  15. Werner Rheinboldt, John Burkardt,
    A Locally Parameterized Continuation Process,
    ACM Transactions on Mathematical Software,
    Volume 9, Number 2, June 1983, pages 215-235.
  16. Werner Rheinboldt, John Burkardt,
    Algorithm 596: A Program for a Locally Parameterized Continuation Process,
    ACM Transactions on Mathematical Software,
    Volume 9, Number 2, June 1983, pages 236-241.
  17. Werner Rheinboldt,
    Numerical Analysis of Parameterized Nonlinear Equations,
    Wiley, 1986,
    ISBN: 0-471-88814-1,
    LC: QA372.R54.
  18. Albert Schy, Margery Hannah,
    Prediction of Jump Phenomena in Roll-coupled Maneuvers of Airplanes,
    Journal of Aircraft,
    Volume 14, Number 4, 1977, pages 375-382.
  19. John Young, Albert Schy, Katherine Johnson,
    Prediction of Jump Phenomena in Aircraft Maneuvers, Including Nonlinear Aerodynamic Effects,
    Journal of Guidance and Control,
    Volume 1, Number 1, 1978, pages 26-31.

Source Code:

Examples and Tests:

Problem 1 is a simple demonstration test, involving the Freudenstein-Roth function. There are 2 equations, and 3 variables. The solution curve has some severe bends. This file solves the problem with a minimum of fuss. Files you may copy include:

Problem 2 handles the Aircraft Stability problem. There are 7 equations in 8 variables. This is a mildly nonlinear problem, whose solution curve has some limit points that are difficult to track. Files you may copy include:

Problem 3 is a boundary value problem with 22 variables. This problem has a limit point in the LAMBDA parameter, which we seek. We solve this problem 6 times, illustrating the use of full and banded jacobians, and of user-generated, or forward or central difference approximated jacobian matrices.

The first 21 variables represent the values of a function along a grid of 21 points between 0 and 1. By increasing the number of grid points, the problem can be set up with arbitrarily many variables. This change requires changing a single parameter in the main program. Files you may copy include:

Problem 4 is another version of the Freudenstein Roth problem. This version of the problem tests the parameterization fixing option. The user may demand that PITCON always use a given index for continuation, rather than varying the index from step to step. The Freudenstein-Roth curve may be parameterized by the variable of index 2, although this may increase the number of steps required to traverse the curve.

This file carries out 6 runs, with and without the parameterization fixed, and with no limit point search, or with limit points sought for index 1 or for index 3. Files you may copy include:

Problem 5 is another version of the boundary value problem This time, we do NOT seek the limit point in the LAMBDA parameter, but rather the two target points where LAMBDA=0.8, which occurs twice, before and after LAMBDA "goes around the bend".

We run this test 3 times, comparing the behavior of the full Newton iteration, the Newton iteration that fixes the Jacobian during the correction of each point, and the Newton iteration that fixes the Jacobian as long as possible. Files you may copy include:

Problem 6 repeats the Freudenstein Roth function. This version of the problem demonstrates the jacobian checking option. Two runs are made. Each is allowed only five steps. The first run is with the correct jacobian. The second run uses a defective jacobian, and demonstrates not only the jacobian checker, but also shows that "slightly" bad jacobians can cause the Newton convergence to become linear rather than quadratic. Files you may copy include:

Problem 7 is the materially nonlinear problem, with up to 71 variables. This is a two point boundary value problem, representing the behavior of a rod under a load. The shape of the rod is represented by piecewise polynomials, whose form and continuity are specifiable as options. The problem as programmed can allow up to 71 variables, but a simple change of a few parameters will allow the problem to be arbitrarily large.

This is a complicated program. It is intended to demonstrate the advanced kinds of problems that can be solved with PITCON, as opposed to the "toy" problems like the Freudenstein-Roth function. is a simple demonstration test. Files you may copy include:

Problem 8 is a version of the Freudenstein-Roth function. This version of the problem tests the jacobian approximation options. We run the problem 3 times, first with the user jacobian, second with the forward difference approximation, and third with the central difference approximation. Files you may copy include:

List of Routines:

You can go up one level to the FORTRAN90 source codes.


Last revised on 12 January 2011.