This will contain a collection of Ada (and possibly lisp, if I get really ambitious) packages for numerical operations.
Don't blindly trust these or any other numerical methods. You need to understand your problem and how computers do arithmatic.
A rough outline of what I plan is below. Obviously, this will be subject to change. I expect that most, if not all of these packages will be generic so that they can be used on different numerical types.
In general, you should probably use the complex package in the Ada standard numerics library. This is more of a practice run for me. The one difference is that complex numbers are a tagged record so that object notation can be used for some of the operations, if that's important to you.
Implemented algorithms are:
- Composite trapezoid
- Composite Simpson's
- Adaptive Simpson's
These operations can easily cause trouble if you don't understand your problem and computer arithmatic. The core of taking a derivative involves subtracting two nearly equal numbers and dividing by a small number. This has the effect of amplifying round-off errors. Avoid these operations, if you can.
- 2 point method
- 3 point methods
- 5 point methods
These are basic algorithms for finding numerical solutions to differential equations.
the implemented algorithms are:
- Euler's method
- 4th order Runge-Kutta
- 4/5th order Runge-Kutta-Fehlberg
- 4th order Adams-Bashforth/Adams-Moulton
- 4th order Runge-Kutta for systems of differential equations
These are used to find roots (zero crossings) of functions. There are a number of different methods with diffrent pros and cons. It is important to understand the nature of the function before selecting the root finding algorithm.
The implemented algorithms are:
- Bisection
- Secant
- Mueller (versions for real roots and complex roots)
A polynomial is implemented as an array with the lower index value set to 0. The index represents the exponent for the independant variable and the array value at that index is the coefficient.
Implemented operations include
- Addition and subtraction of polynomials
- Multiplication of polynomial by a scalar
- Multiplication of polynomial by polynomial
- Division of polynomial by polynomial
- Evaluation of polynomial
- Integral of polynomial
- Derivative of polynomial
Some basic operations are implemented.
Simple linear regression is implemented.
Some basic functions are implemented for analyzing data
- Mean
- Variance
- Limits
The normal distribution is implemented.
The Chi^2 distribution is in development.
These are special functions not included with Ada's elementary functions that are useful or needed by other routines here.
- gamma2n - Divides the positive integer argument by two and computes the gamma function. Used to support chi^2.
- lngamma2n - Natural log of gamma2n. Allows larger values of n without overflow.