TEST_CON
Continuation Tests
TEST_CON
is a MATLAB library which
defines test functions for continuation codes.
A simple continuation code is an algorithm
for producing a sequence of solutions of the system of equations
F(X) = 0, where there are fewer equations F than variables X.
Commonly, there is one more variable than equation, resulting in
one degree of freedom. The set of solutions will then generally
describe a curve.
A continuation code might carry out the following steps:
-
choose a problem by picking an index number.
-
for problems with several options, pick an option index.
-
find out the number of variables.
-
get a starting point X0.
-
get a suggested stepsize H.
-
get the tangent vector T at X0.
-
use the estimate X1=X0+H*T as a starting point for
a new point on the curve; use Newton method to refine the estimate.
-
If the Newton iteration failed, reduce H and try again.
-
If the new point was computed "easily", increase H.
-
Go back to step 6 if another point is desired.
TEST_CON includes routines to
-
return the number of problems available (p00_problem_num);
-
return the number of different "options" for each problem (p00_option_num);
-
return the problem size NVAR (p00_nvar);
-
provide a starting point X0 (p00_start);
-
provide a suggested stepsize H (p00_stepsize);
-
determine the tangent vector T(X) (p00_tan);
-
apply Newton's method to an approximate solution (p00_newton);
-
take a single continuation step (compute the "next" point) (p00_step);
-
compute a target point, for which one component has a selected value
(p00_target);
-
choose the continuation parameter index (p00_par_index);
-
evaluate the function F(X) (p00_fun);
-
evaluate the jacobian J(X) (p00_problem_jac);
-
return the problem title (p00_title);
The list of problems includes:
-
The Freudenstein-Roth function
-
The Boggs function
-
The Powell function
-
The Broyden function
-
The Wacker function
-
The Aircraft stability function
-
The Cell kinetic function
-
The Riks mechanical problem
-
The Oden mechanical problem
-
Torsion of a square rod, finite difference solution
-
Torsion of a square rod, finite element solution
-
The materially nonlinear problem
-
Simpson's mildly nonlinear boundary value problem
-
Keller's boundary value problem
-
The Trigger Circuit
-
The Moore-Spence Chemical Reaction Integral Equation
-
The Bremermann Propane Combustion System
-
The semiconductor problem
-
The Nitric acid absorption flash
-
The Buckling Spring
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
TEST_CON is available in
a FORTRAN77 version and
a FORTRAN90 version and
a MATLAB version.
Related Data and Programs:
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 ACM TOMS algorithm 596.
PITCON7,
a FORTRAN90 library which
seeks to produce a sequence of points that satisfy a set of nonlinear
equations with one degree of freedom;
this is version 7.0 of ACM TOMS algorithm 596.
TEST_CON,
a dataset directory which
contains sequences of points that lie on multidimensional curves defined by
sets of nonlinear equations;
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.
Reference:
-
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.
-
Paul Boggs,
The Solution of Nonlinear Systems by A-stable
Integration Techniques,
SIAM Journal on Numerical Analysis,
Volume 8, Number 4, December 1971, pages 767-785.
-
Hans Bremermann,
Calculation of Equilibrium Points for Models of Ecological and
Chemical Systems,
in Proceedings of a Conference on the Applications of Undergraduate
Mathematics in the Engineering, Life, Managerial
and Social Sciences,
Georgia Institute of Technology, June 1973, pages 198-217.
-
Charles Broyden,
A New Method of Solving Nonlinear Simultaneous Equations,
The Computer Journal,
Volume 12, 1969, pages 94-99.
-
Tama Copeman,
Air Products and Chemicals, Inc.
Box 538,
Allentown, Pennsylvania, 18105.
-
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.
-
Ferdinand Freudenstein, Bernhard Roth,
Numerical Solutions of Nonlinear Equations,
Journal of the ACM,
Volume 10, Number 4, October 1963, pages 550-556.
-
Kathie Hiebert,
A Comparison of Software Which Solves Systems of Nonlinear
Equations,
Technical Report SAND-80-0181,
Sandia National Laboratory, 1980.
-
Herbert Keller,
Numerical Methods for Two-point Boundary Value Problems,
Dover, 1992,
ISBN: 0486669254,
LC: QA372.K42.
-
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.
-
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.
-
Gerald Moore, Alastair Spence,
The Calculation of Turning Points of Nonlinear Equations,
SIAM Journal on Numerical Analysis,
Volume 17, Number 4, August 1980, pages 567-576.
-
John Oden,
Finite Elements of Nonlinear Continua,
Dover, 2006,
ISBN: 0486449734,
LC: QA808.2.O33.
-
Gerd Poenisch, Hubert Schwetlick,
Computing Turning Points of Curves Implicitly Defined by Nonlinear
Equations Depending on a Parameter,
Computing,
Volume 26, Number 2, June 1981, pages 107-121.
-
SJ Polak, A Wachten, H Vaes, A deBeer, Cor denHeijer,
A Continuation Method for the Calculation of Electrostatic
Potentials in Semiconductors,
Technical Report ISA-TIS/CARD,
NV Philips Gloeilampen-Fabrieken, 1979.
-
Tim Poston, Ian Stewart,
Catastrophe Theory and its Applications,
Dover, 1996,
ISBN13: 978-0486692715,
LC: QA614.58.P66.
-
Michael Powell,
A Fortran Subroutine for Solving Systems of Nonlinear
Algebraic Equations,
in Numerical Methods for Nonlinear Algebraic Equations,
edited by Philip Rabinowitz,
Gordon and Breach, 1970,
ISBN13: 978-0677142302,
LC: QA218.N85.
-
Werner Rheinboldt,
Computation of Critical Boundaries on Equilibrium Manifolds,
SIAM Journal on Numerical analysis,
Volume 19, Number 3, June 1982, pages 653-669.
-
Werner Rheinboldt, John Burkardt,
A Locally Parameterized Continuation Process,
ACM Transactions on Mathematical Software,
Volume 9, Number 2, June 1983, pages 215-235.
-
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.
-
Werner Rheinboldt,
Numerical Analysis of Parameterized Nonlinear Equations,
Wiley, 1986,
ISBN: 0-471-88814-1,
LC: QA372.R54.
-
Werner Rheinboldt,
Sample Problems for Continuation Processes,
Technical Report ICMA-80-?,
Institute for Computational Mathematics and Applications,
Department of Mathematics,
University of Pittsburgh, November 1980.
-
Werner Rheinboldt,
Solution Fields of Nonlinear Equations and Continuation Methods,
SIAM Journal on Numerical Analysis,
Volume 17, Number 2, April 1980, pages 221-237.
-
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.
-
E Riks,
The Application of Newton's Method to the Problem of Elastic
Stability,
Transactions of the ASME, Journal of Applied Mechanics,
December 1972, pages 1060-1065.
-
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.
-
Bruce Simpson,
A Method for the Numerical Determination of Bifurcation
States of Nonlinear Systems of Equations,
SIAM Journal on Numerical Analysis,
Volume 12, Number 3, June 1975, pages 439-451.
-
Hans-Joerg Wacker, Erich Zarzer, Werner Zulehner,
Optimal Stepsize Control for the Globalized Newton Method,
in Continuation Methods,
edited by Hans-Joerg Wacker,
Academic Press, 1978,
ISBN: 0127292500,
LC: QA1.S899.
-
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:
-
ch_cap.m
returns the capitalized version of a character;
-
p00_fun.m,
evaluates the function for any problem.
-
p00_jac.m,
evaluates the jacobian for any problem.
-
p00_jac_check.m,
compares the jacobian with a finite difference estimate.
-
p00_jac_dif.m,
estimates the jacobian via finite differences.
-
p00_limit.m,
seeks a limit point.
-
p00_newton.m,
applies Newton's method to an approximate root.
-
p00_nvar.m,
sets the number of variables for any problem.
-
p00_option_num.m,
returns the number of options for a given problem.
-
p00_par_index.m,
chooses the index of the continuation parameter.
-
p00_problem_num.m,
returns the number of problems.
-
p00_start.m,
returns a starting point for any problem.
-
p00_step.m,
tries to take one continuation step from the current point.
-
p00_stepsize.m,
returns the stepsize for any problem.
-
p00_tan.m,
returns the tangent vector for any problem.
-
p00_title.m,
sets the title for any problem.
-
p01_fun.m,
evaluates the function for problem 1.
-
p01_gx.m,
evaluates the underlying function for problem 1.
-
p01_jac.m,
evaluates the jacobian for problem 1.
-
p01_nvar.m,
sets the number of variables for problem 1.
-
p01_option_num.m,
sets the number of options for problem 1.
-
p01_stepsize.m,
returns a stepsize for problem 1.
-
p01_start.m,
returns a starting point for problem 1.
-
p01_title.m,
sets the title for problem 1.
-
p02_fun.m,
evaluates the function for problem 2.
-
p02_gx.m,
evaluates the underlying function for problem 2.
-
p02_jac.m,
evaluates the jacobian for problem 2.
-
p02_nvar.m,
sets the number of variables for problem 2.
-
p02_option_num.m,
sets the number of options for problem 2.
-
p02_start.m,
returns a starting point for problem 2.
-
p02_stepsize.m,
returns a stepsize for problem 2.
-
p02_title.m,
sets the title for problem 2.
-
p03_fun.m,
evaluates the function for problem 3.
-
p03_gx.m,
evaluates the underlying function for problem 3.
-
p03_jac.m,
evaluates the jacobian for problem 3.
-
p03_nvar.m,
sets the number of variables for problem 3.
-
p03_option_num.m,
sets the number of options for problem 3.
-
p03_start.m,
returns a starting point for problem 3.
-
p03_stepsize.m,
returns a stepsize for problem 3.
-
p03_title.m,
sets the title for problem 3.
-
p04_fun.m,
evaluates the function for problem 4.
-
p04_gx.m,
evaluates the underlying function for problem 4.
-
p04_jac.m,
evaluates the jacobian for problem 4.
-
p04_nvar.m,
sets the number of variables for problem 4.
-
p04_option_num.m,
sets the number of options for problem 4.
-
p04_start.m,
returns a starting point for problem 4.
-
p04_stepsize.m,
returns a stepsize for problem 4.
-
p04_title.m,
sets the title for problem 4.
-
p05_fun.m,
evaluates the function for problem 5.
-
p05_jac.m,
evaluates the jacobian for problem 5.
-
p05_nvar.m,
sets the number of variables for problem 5.
-
p05_option_num.m,
sets the number of options for problem 5.
-
p05_start.m,
returns a starting point for problem 5.
-
p05_stepsize.m,
returns a stepsize for problem 5.
-
p05_title.m,
sets the title for problem 5.
-
p06_fun.m,
evaluates the function for problem 6.
-
p06_barray.m,
sets the B array.
-
p06_carray.m,
sets the C array.
-
p06_jac.m,
evaluates the jacobian for problem 6.
-
p06_nvar.m,
sets the number of variables for problem 6.
-
p06_option_num.m,
sets the number of options for problem 6.
-
p06_start.m,
returns a starting point for problem 6.
-
p06_stepsize.m,
returns a stepsize for problem 6.
-
p06_title.m,
sets the title for problem 6.
-
p07_fun.m,
evaluates the function for problem 7.
-
p07_jac.m,
evaluates the jacobian for problem 7.
-
p07_nvar.m,
sets the number of variables for problem 7.
-
p07_option_num.m,
sets the number of options for problem 7.
-
p07_start.m,
returns a starting point for problem 7.
-
p07_stepsize.m,
returns a stepsize for problem 7.
-
p07_title.m,
sets the title for problem 7.
-
p08_fun.m,
evaluates the function for problem 8.
-
p08_gx.m,
sets data used for Rik's mechanical problem.
-
p08_hx.m,
reports the constraint equation data.
-
p08_jac.m,
evaluates the jacobian for problem 8.
-
p08_nvar.m,
sets the number of variables for problem 8.
-
p08_option_num.m,
sets the number of options for problem 8.
-
p08_start.m,
returns a starting point for problem 8.
-
p08_stepsize.m,
returns a stepsize for problem 8.
-
p08_title.m,
sets the title for problem 8.
-
p09_fun.m,
evaluates the function for problem 9.
-
p09_gx.m,
is used by problem 9.
-
p09_jac.m,
evaluates the jacobian for problem 9.
-
p09_nvar.m,
sets the number of variables for problem 9.
-
p09_option_num.m,
sets the number of options for problem 9.
-
p09_start.m,
returns a starting point for problem 9.
-
p09_stepsize.m,
returns a stepsize for problem 9.
-
p09_title.m,
sets the title for problem 9.
-
p10_fun.m,
evaluates the function for problem 10.
-
p10_gx.m,
is used by problem 10.
-
p10_jac.m,
evaluates the jacobian for problem 10.
-
p10_nvar.m,
sets the number of variables for problem 10.
-
p10_option_num.m,
sets the number of options for problem 10.
-
p10_start.m,
returns a starting point for problem 10.
-
p10_stepsize.m,
returns a stepsize for problem 10.
-
p10_title.m,
sets the title for problem 10.
-
p11_fun.m,
evaluates the function for problem 11.
-
p11_gauss.m,
returns the Gauss quadrature abscissas and weights.
-
p11_gul.m,
computes G(U,LAMBDA) and dG/dU and dG/dLAMBDA.
-
p11_jac.m,
evaluates the jacobian for problem 11.
-
p11_nvar.m,
sets the number of variables for problem 11.
-
p11_option_num.m,
sets the number of options for problem 11.
-
p11_phi.m,
is used by problem 11.
-
p11_shape.m,
evaluates the shape functions for problem 11.
-
p11_start.m,
returns a starting point for problem 11.
-
p11_stepsize.m,
returns a stepsize for problem 11.
-
p11_title.m,
sets the title for problem 11.
-
p12_fun.m,
evaluates the function for problem 12.
-
p12_gauss.m,
returns an 8 point Gauss quadrature rule.
-
p12_jac.m,
evaluates the jacobian for problem 12.
-
p12_legendre_val.m,
evaluates the Legendre polynomials and derivatives.
-
p12_nvar.m,
sets the number of variables for problem 12.
-
p12_option_num.m,
sets the number of options for problem 12.
-
p12_start.m,
returns a starting point for problem 12.
-
p12_stepsize.m,
returns a stepsize for problem 12.
-
p12_theta.m,
is a utility routine used in problem 12.
-
p12_title.m,
sets the title for problem 12.
-
p13_fun.m,
evaluates the function for problem 13.
-
p13_fx2.m,
computes the function by recasting it on a square grid.
-
p13_gp.m,
evaluates the derivative of the right hand side function.
-
p13_gx.m,
evaluates the right hand side function.
-
p13_jac.m,
evaluates the jacobian for problem 13.
-
p13_jac2.m,
computes the jacobian by recasting it on a square grid.
-
p13_nvar.m,
sets the number of variables for problem 13.
-
p13_option_num.m,
sets the number of options for problem 13.
-
p13_start.m,
returns a starting point for problem 13.
-
p13_stepsize.m,
returns a stepsize for problem 13.
-
p13_title.m,
sets the title for problem 13.
-
p14_fun.m,
computes the function for problem 14.
-
p14_fu.m,
computes the auxilliary function F(LAMBDA,U).
-
p14_fudl.m,
computes d F(LAMBDA,U) / d LAMBDA.
-
p14_fudu.m,
computes d F(LAMBDA,U) / d U
-
p14_gu.m,
computes the auxilliary function G(U).
-
p14_gudu.m,
computes d G(U) / d U.
-
p14_jac.m,
computes the jacobian of problem 14.
-
p14_nvar.m,
sets the number of variables for problem 14.
-
p14_option_num.m,
sets the number of options for problem 14.
-
p14_start.m,
returns a starting point for problem 14.
-
p14_stepsize.m,
returns a stepsize for problem 14.
-
p14_title.m,
sets the title for problem 14.
-
p15_fun.m,
evaluates the function for problem 15.
-
p15_gx.m,
returns the coefficients of the linear portion of the function.
-
p15_jac.m,
computes the jacobian for problem 15.
-
p15_nvar.m,
sets the number of variables for problem 15.
-
p15_option_num.m,
sets the number of options for problem 15.
-
p15_start.m,
returns a starting point for problem 15.
-
p15_stepsize.m,
returns a stepsize for problem 15.
-
p15_title.m,
sets the title for problem 15.
-
p16_fun.m,
evaluates the function for problem 16.
-
p16_jac.m,
computes the jacobian for problem 16.
-
p16_nvar.m,
sets the number of variables for problem 16.
-
p16_option_num.m,
sets the number of options for problem 16.
-
p16_start.m,
returns a starting point for problem 16.
-
p16_stepsize.m,
returns a stepsize for problem 16.
-
p16_title.m,
sets the title for problem 16.
-
p17_fun.m,
evaluates the function for problem 17.
-
p17_jac.m,
evaluates the jacobian for problem 17.
-
p17_nvar.m,
sets the number of variables for problem 17.
-
p17_option_num.m,
sets the number of options for problem 17.
-
p17_start.m,
returns a starting point for problem 17.
-
p17_stepsize.m,
returns a stepsize for problem 17.
-
p17_title.m,
sets the title for problem 17.
-
p18_fun.m,
evaluates the function for problem 18.
-
p18_gx.m,
evaluates the auxilliary function G ( T, U, LAMBDA ).
-
p18_gpu.m,
evaluates d G ( T, U, LAMBDA ) / dU.
-
p18_gpl.m,
evaluates d G ( T, U, LAMBDA ) / d LAMBDA.
-
p18_jac.m,
evaluates the jacobian for problem 18.
-
p18_nvar.m,
sets the number of variables for problem 18.
-
p18_option_num.m,
sets the number of options for problem 18.
-
p18_start.m,
returns a starting point for problem 18.
-
p18_stepsize.m,
returns a stepsize for problem 18.
-
p18_title.m,
sets the title for problem 18.
-
p19_fun.m,
evaluates the function for problem 19.
-
p19_con.m,
returns physical constants.
-
p19_conp.m,
returns physical constant derivatives.
-
p19_jac.m,
evaluates the jacobian for problem 19.
-
p19_nvar.m,
sets the number of variables for problem 19.
-
p19_option_num.m,
sets the number of options for problem 19.
-
p19_start.m,
returns a starting point for problem 19.
-
p19_stepsize.m,
returns a stepsize for problem 19.
-
p19_title.m,
sets the title for problem 19.
-
p20_fun.m,
evaluates the function for problem 20.
-
p20_i4_get.m,
returns the value of an integer parameter for problem 20.
-
p20_i4_set.m,
sets the value of an integer parameter for problem 20.
-
p20_i4_store.m,
sets or gets the value of an integer parameter for problem 20.
-
p20_jac.m,
evaluates the jacobian for problem 20.
-
p20_nvar.m,
sets the number of variables for problem 20.
-
p20_option_num.m,
returns the number of options for problem 20.
-
p20_r8_get.m,
returns the value of a real parameter for problem 20.
-
p20_r8_set.m,
sets the value of a real parameter for problem 20.
-
p20_r8_store.m,
sets or gets the value of a real parameter for problem 20.
-
p20_setup.m,
finds a solution (L,THETA,LAMBDA,MU) given L and THETA.
-
p20_start.m,
returns a starting point for problem 20.
-
p20_stepsize.m,
returns step sizes for problem 20.
-
p20_title.m,
sets the title for problem 20.
-
r8_mop.m,
returns the I-th power of -1 as an R8.
-
r8_sign.m,
returns the sign of an R8.
-
r8_uniform_01.m,
returns a random R8 between 0 and 1.
-
r8vec_amax_index.m,
returns the index of the maximum absolute value in an R8VEC.
-
s_eqi.m,
is TRUE if two strings are equal, ignoring case and trailing blanks;
-
timestamp.m,
prints the current YMDHMS date as a time stamp.
-
zero_rc.m,
seeks the root of a function F(X) using reverse communication.
Examples and Tests:
-
test_con_test.m,
calls all the tests;
-
p00_jac_test.m,
compares the jacobian to a finite difference estimate;
-
p00_newton_test.m,
applies the Newton algorithm to a perturbed copy of the starting point.
-
p00_nvar_test.m,
calls P00_NVAR to get the size of each problem;
-
p00_option_num_test.m,
calls P00_OPTION_NUM to get the number of options for each problem;
-
p00_start_test.m,
calls P00_START to get the starting point for each problem;
-
p00_stepsize_test.m,
calls P00_STEPSIZE to get the stepsize of each problem;
-
p00_tan_test.m,
calls P00_TAN to compute the tangent vector at the starting point.
-
p00_title_test.m,
calls P00_TITLE to get the title of each problem;
-
p01_limit_test.m,
searches for limit points in problem 1;
-
p01_target_test.m,
searches for target points in problem 1;
-
p06_limit_test.m,
searches for limit points in problem 6.
-
test_con_test_output.txt,
the output file.
You can go up one level to
the MATLAB source codes.
Last revised on 14 October 2008.