Numerical Algorithms for Nonlinear Dynamics
&
Existing Program Implementations

Components for the toolbox
«Make yourself a program».

SGTND main    : :    Algorithms and Programms    : :    Components for the toolbox

russian      noframes
frames  

There is no universal program that would solve all kinds of problems for you. Almost always it is necessary to code something by yourself. Each reseacher has his own set of subprograms, code snippets, favourite algorithms and methods which is collected by years and serves as an initial material for everyday work.

At first glance, the matter this page is devoted to has no immediate concern with nonlinear dynamics. However, your precious intentions, methods, algorithms should be implemented in a stuff any programm is made of - some kind of programming languages your computer is aware of. And presumably you need a toolbox of reusable standard building blocks to make your life easier. By simplest estimations, minimal set of tools should include the following:

  • Linear algebra solvers.

  • Nonlinear equations solvers.

  • Ordinary differential equations solvers.

  • Subprograms for parameter continuation of solutions for systems of nonlinear equations.

Statistical problems are not mentioned here, and spectral ones, and ..., and ... - would be happy myself to read about all this somewhere else.

Obviously, there are packages of subprograms "all-in-one" or "batteries included" - libraries where you can find all the necessary, except for, perhaps, last item of our list. If you are working under MATLAB or MATHEMATICA, well, I am wasting your time here. Or, for example, if you are the happy owner of the COMPAQ FORTRAN compiler, you have all you might need with IMSL library, precompiled and ready to use. Absolutely convenient thing.

However, often and often it would be desirable to have at hand something

  • easily portable, working under any OS

  • small and flexible, comprehensible, such, that it would be possible to adjust easily under new circumstances

  • that would be possible to transmit to friends and other users, without worrying, whether you have rights to do this or whether they have these libraries

  • to demonstrate your programmer's coolness.

Probably, it means that you need open source libraries.

First of all there are

General purpose libraries

Programming language

General features

LAPACK

FORTRAN, C

This is a linear algebra library and cannot be considered as a general purpose package.
The only reason for including it in this list is that both SLATEC and GSL use it for solving linear algebra tasks

SLATEC

FORTRAN

The old enough, presumably time-proved package.
Locates at NETLIB. It should be noted, that there is a lot of interesting stuff on NETLIB besides SLATEC. Eventually, all roads lead to NETLIB.

GSL

C

GNU Scientific Library
The project is actively developed now (current version 1.8). There are problems concerning compiling for WIN32. Here you can find precompiled binary and import libraries for Visual C++ and (how to ) make it. And here there is a patch, allowing to compile the library under Visual C++ 2005.
Precompiled GSL library is a part of CYGWIN distribution, so if you are using this compiler you always have a complete solution.

Numerical Recipes
(books on-line)

FORTRAN, C, PASCAL

Not the library itself is accessible online, there is a text of the tutorial on numerical methods with published inside sources. This library is often criticized by professionals, and is marked as "tutorial" and "for beginners". However, if numerical situation is standard and far from pathological, this package is able to work.

Very often such a universal solution is not a flexible enough one. Necessity to fix up the problems of interdependency, compatibility and cross-references leads to a bootstrap and excessive formalization of interfaces.

To make a long story short, I want to say that sometimes the preferable way is to collect yourself a library from the pieces, taken from different reliable sources, for your own purposes. Therefore, I am going to give here alternative solutions concerning the aforementioned list of components for programming the nonlinear dynamics problems. They should not be considered as the best and strongly recommended for usage, but only as a probable choice and a point just to begin with.