PasMatLib

 Description

by Nikolai Shokhirev

PasMatLib Tutorial

Contents

Introduction

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 Pascal?

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.

Library description

Basic types

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

Dynamic Arrays

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

Linear algebra objects and routines.

Units Description
uDynLinAlg Linear algebra routines (Based on EBK&NVS Library)
uDynObjAlg Object algebra routines

Display 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

Special functions

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

Optimization

Units Description
uLevenbergMarquardt Levenberg-Marquardt fit and optimization, SVD fit
uOptimization TOptim1D class
uOptimUtils Optimization utilities: bracketing, 1D minimization
uZerion 1D function zero search

Signal processing

Fourier transform and simple filtering 

Units Description
uFourier Fourier signal processing library
uAverage Derivatives and average routines
uFourierDisplay 13 Dimensional Low Discrepancy Sobol Sequences

Data processing

Units Description
uDynData Signal and Data objects
uDynDataUtils Data and signal processing utilities
uSpline 1D and 2D spline routines
uStatUtils Statistical processing library

Numerical Methods

Units Description
uIntegration Numerical integration
uODE Ordinary differential equations

Pascal translation of Forsythe-Malcolm-Moler FORTRAN procedures

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

  1. "Computer Methods for Mathematical Computations", by George E. Forsythe, Michael A. Malcolm, and Cleve B. Moler. Prentice-Hall, 1977.
  2. Netlib Repository http://www.netlib.org/fmm/
  3. Public Domain Aeronautical Software (PDAS) http://www.pdas.com/free.htm 
  4. ForToPas - FORTRAN to Pascal converter

Project status

Development, contributions (including dunit tests) are welcome.

User guide

A short user guide is here.

Download

The PasMatLib units are available in the Download section

PasMatLib Tutorial


Programming toolsPasMatLib Tutorial | User guide | Download

Home  |   Shokhirev.com |  Sample code  |   Programming  |    Resume

Please e-mail me at nikolai@shokhirev.com

©Nikolai Shokhirev, 2002-2009

 

tml>l>tml>