ConSol is the name of the codes in the following book.
Solving Polynomial Systems using Continuation for Engineering and Scientific Problems, Alexander Morgan, Prentice-Hall, 1987, ISBN 0-13-822313-0
The continuation method involves solving a sequence of problems starting from one with a known solution and working towards the target problem with initially unknown solution. Different roots can be found by starting from different solutions of the initial problem, which should therefore have the same number of solutions as the target problem. For example, the solutions of the quadratic equation
x^2 + a x + b = 0can be found by starting from the equation
x^2 - q^2 = 0and solving a sequence of problems
x^2 + t a x + t b - (1 - t) q^2 = 0for t stepping from 0 to 1. Morgan shows how starting from the two solutions, +q and -q, of the starting problem, the two different solutions of the quadratic can be found, whether they are real or complex.
Here even with a, b and t real, x may be complex. q is chosen as a random complex constant.
Of course this is just an example, which could be done more efficiently by other methods. The method is extended to other problems which do not have analytical solutions.
The book contains programs written in FortranLanguage.
I have been reimplementing these programs in CeePlusPlus using DaixtroseLib, with a view to implementing the programs in parallel using the ObjectOrientedMessagePassingInterface (OOMPI). The nice thing about DaixtroseLib is that it is possible to define expressions in the variables of the problem and implement differentiation of the expression in such a way that it is evalutated at compile time. This is just what is needed for this application. -- JohnFletcher
See also PerturbationMethods?, e.g. http://en.wikipedia.org/wiki/Perturbation_theory
Thank you. That is a connection I had not made at all. The wikipedia page cited gives an example
x = 1 + e x^5and discusses the four extra solutions. ConSol can be used to find all the solutions, and a parallel version would find them all together. -- JohnFletcher
Welcome.
How does it do in the presence of orbits? I saw a comment regarding forced van der Pol saying that using continuation methods required an initial orbit approximation as input.
This sounds rather interesting; it's been in development since 1976(!):
"AUTO is a software package for continuation and bifurcation problems in ordinary differential equations"
"AUTO has been used in carrying out computer experiments with a variety of systems exhibiting complex phenomena that occur in scientific and engineering disciplines. The applications range from predator-prey models of mathematical biology to continuously stirred tanks reactors (CSTRs) in chemical engineering to the gravitational N-body problem of celestial mechanics."
Main fork: http://indy.cs.concordia.ca/auto/
"Auto 2000" fork, translated to C, nice extra features like a 3D data viewer, but seem to have less documentation, fewer users, etc.: http://www.enm.bris.ac.uk/staff/hinke/dss/continuation/auto.html
So the two forks (or at least their sites) seem to complement each other, rather than Auto 2000 necessarily outright replacing Auto 97.
-- DougMerritt
I think the two sites are talking about the same software. I have downloaded Auto2000 from one of them. From the web pages, they are talking I think about continuation by varying one or more parameters within the problem. ConSol extends a problem in that the parameter t moves between problems. In the book, Morgan talks about nonpath behaviours which include splitting, spirals and terminations. He also discusses badpath behaviour, which includes backtracking and infinities. If I take the previous example function
h(x,t) = x^2 + t a x + t b - (1 - t) q^2His solution method is to find
h(x,t) = 0for a series of fixed steps from t = 0 to t = 1, using e.g. delta t = 0.05. At each step he solves the problem for x using the Newton method
delta x = - h(x,t)/ dh/dxwhich usually takes only a few iterations.
I have varied his method by changing the starting guess at each step. He just used the previous converged method, but it is possible to make a first order correction to x when changing t which usually saves an iteration or two on each Newton solution, since in that case
dh/dx delta x + dh/dt delta t = 0This has the advantage that calculation of the derivative with respect to t checks on many of the possible bad behaviours, as for most of them this derivative will become singular at some point. The nice thing about doing this with DaixtroseLib is that adding the extra derivative is one line of code, and the program will work out the actual function.
This example problem is well behaved. -- JohnFletcher
CategoryBook CategoryCpp CategoryCppTemplates CategoryFortran