by Nikolai Shokhirev
There are some areas (e.g. science, engineering, education) where the development of ideas, concepts, models and methods is more time-consuming than the accompanying computations. In such areas
tools like Mathematica
(http://www.wolfram.com), MATLAB (http://www.mathworks.com) and Maple
(http://www.maplesoft.com) are widely used.
Advantages of tools for doing symbolic
and/or numeric calculations:
1. Abundance of built-in methods and features
2. Flexibility with a variety of supporting techniques
3. Scripting and programming abilities for further enhancement
Drawbacks:
1. Necessity to learn a lot of features
2. Restriction of flexibility by predefined approaches
3. Necessity to learn tool-specific programming methods or
4. Use of third party add-ins
The alternative approach is to use
high-level programming languages. Note that, in such areas programming is usually only a tool. This approach has its advantages and disadvantages as well.
Advantages:
1. Relatively small number of language elements
2. Flexibility is (almost) unlimited
3. Potential high efficiency
4. Self-sufficiency
Disadvantages:
1. Necessity to write programs from scratch
2. Relatively low productivity (for non-professional programmers)
Numerous libraries and packages help to overcome the disadvantages of the programming approach.
This is an attempt to develop yet another package. I have been using it for
several years.
Why not? Object Pascal is a well developed Object-oriented language with an elegant object model. Its basic subset is very compact and easy to learn. It can be mastered gradually. It is less error-prone than some other languages.
Float real and complex types, constants,
conversion routines and basic complex routines; Types: TArrayType, TSliceType, IRestore, IComment, TComment.
Unit uMatTypes - Only properties and public methods are displayed
Light-weight dynamic arrays (see the description here).
| Units | Description |
|---|---|
| uDynArrays | Dynamic float, integer, complex and Boolean arrays |
| uDynArrUtils | Linear algebra utilities and basic routines |
| uDynArrIO | I/O routines for dynamic arrays |
| uDynArrUtilsX | Linear algebra extra utilities (mainly for testing) |
Linear algebra objects and routines.
| Units | Description |
|---|---|
| uDynLinAlg | Linear algebra routines (Based on EBK&NVS Library) |
| uDynObjAlg | Object algebra routines |
Display routines for vectors, matrices and plots (see the description here).
| Units | Description |
|---|---|
| uGraph2D | TPlot2D and TPlotBox2D classes |
| fDisplay | Display Form |
| uSurface | TSurfase definition |
| fDisplayCVal | Display complex format form |
| fDisplayVal | Display format form |
| fMapBox | fMapBox form |
| fPlot2D | fPlot2D form |
| fSurface | TFormSurface class |
| uGrid2D | TGrid2D and TGrid2Dm classes |
| uMapBox | TMapBox class |
| uDisplay | Display utilities |
| uColorMap | Color map routines |
| uPainter | TPainterLight and TPainter classes |
| uPainter0 | TPainter0 class |
Collection of special functions and random.
| Units | Description |
|---|---|
| uSpecFunc | Real special functions |
| uIsaac | High-quality pseudo-random number generator algorithm by © Bob Jenkins |
| uRand13 | 13 Dimensional Low Discrepancy Sobol Sequences |
| Units | Description |
|---|---|
| uLevenbergMarquardt | Levenberg-Marquardt fit and optimization, SVD fit |
| uOptimization | TOptim1D class |
| uOptimUtils | Optimization utilities: bracketing, 1D minimization |
| uZerion | 1D function zero search |
Fourier transform and simple filtering
| Units | Description |
|---|---|
| uFourier | Fourier signal processing library |
| uAverage | Derivatives and average routines |
| uFourierDisplay | 13 Dimensional Low Discrepancy Sobol Sequences |
| Units | Description |
|---|---|
| uDynData | Signal and Data objects |
| uDynDataUtils | Data and signal processing utilities |
| uSpline | 1D and 2D spline routines |
| uStatUtils | Statistical processing library |
| Units | Description |
|---|---|
| uIntegration | Numerical integration |
| uODE | Ordinary differential equations |
Our Pascal translations of the original FORTRAN procedures [1, 2] were included into EBK&NVS library and later into ObjMath and PasMatLib. Inspired by the publication of the Fortran-90 translation [3], I collected the procedures (except URAND) in a separate unit uFMM ( The individual Pascal procedures are still included in several PasMatLib units). The unit uFMM is available as an independent download. The use of uFMM requires uMatTypes and uDynArrays (included in the download). The unit test also requires uDynArrUtils, uDynArrUtilsX, uDynObjAlg, uDynArrIO.
References
Development, contributions (including dunit tests) are welcome.
A short user guide is here.
The PasMatLib units are available in the Download section
|
|
Please e-mail me at nikolai@shokhirev.com |
©Nikolai V. Shokhirev, 2002-2005