수치해석학 프로그래밍 리소스

이곳은 현재 인터넷상의 수치해석과 관련된 각종 프로그래밍 도구에 대하여 모아 놓은 곳 입니다. 특히 PC(Window9x/NT)환경에서 사용할 수 있도록 소스를 재 컴파일하거나, 수정하여 모아 두었습니다. 많은 부분은 UNIX와 공유될 수 있을 것입니다.

이 사이트는 수치해석을 공부하는 이들이나, 공학의 수치 해석적인 문제를 해결하는데 많은 도움이 되기를 바랍니다. 


Mathematical Tool Kits(Windows 9X/NT)

Euler  Matlab과 유사한 수치 행렬 계산 언어이다. 복소수, 이차원 삼차원 그래픽을 지원하고 프로그램의 크기가 작아 설치가 간편하다.
http://mathsrv.ku-eichstaett.de/MGF/homes/grothmann/euler/euler.html
Octave 기본적으로 MATLAB과 거의 완벽하게 호환되도록 한 수치 계산용 고급 프로그래밍 언어이다. 실수 복소수의 스칼라와 행렬, 벡터 연산을 수행한다 비선형 연립방정식 수치 적분 상미분 방정식 등을 풀 수 있다. 또한, LAPACK, LINPACK, ODEPACK, BLAS와 같은 FORTRAN 라이브러리로 만든 C++ 크래스 라이브러리 이용한 Solver를 사용한다.
http://www.che.wisc.edu/octave 
RLaB 행렬 계산을 지향하는 대화형 프로그래밍 환경이다. MATLAB과 호환되도록 만들어 지지 않았지만,MATLAB처럼 행렬 계산에 촛점을 두고 있다. MATLAB과 유사한 연산자와 개념을 사용한 프로그래밍언어이다. LAPACK, FFTPACK, RANLIB 이용하여 만들어졌다. 그래픽은 PLplot, gnuplot PlotMTV를 이용하여 구현되었다. MATLAB 사용자라면 쉽게 새 프로그래밍 환경에 적응할 수 있을 것이다.
http://www.eskimo.com/~ians/rlab.html
MuPAD Maple과 유사한 Computer Algebra System. 비상업적 교육 목적으로 자유롭게 사용 가능하다.
http://math-www.uni-paderborn.de/~cube/


Linear Algebra & Solver

배열을 이용한 자료구조 (벡터, 행렬)의 계산에 필요한 라이브러리와 프로그램들이다.  고전적인 수치해석 라이브러리인 Linpack,  Eispack, Lapack, Blas에서  이를 이용할 수 있는 C 라이브러리의 소개
 
 
HCL a C++ class library to implement vectors and linear operators. 

The Hilbert Class Library (HCL) is a collection of C++ classes which apply
     object-oriented programming principles to implement mathematical objects such as
     vectors and linear operators. We have found that HCL provides a convenient
     environment for implementing a variety of algorithms; its particular strength is that it
     allows the generic part of a program (such as optimization algorithms, linear solvers,   and so forth) to be written without reference to the implementations of data
     structures, simulators, and other complex, application-specific details. 
     A central aim in designing HCL has been to avoid legislating coordinate-based
     representations and other idiosyncrasies that often render optimization codes
     unusable to those working in application areas. This design principle results in
     several very important capabilities, such as the ability to treat very large out-of-core
     data sets as vector objects, which distinguish HCL from other object oriented
     numerics libraries.

Newmat This C++ library is intended for scientists and engineers who need to manipulate a
     variety of types of matrices using standard matrix operations. Emphasis is on the
     kind of operations needed in statistical calculations such as least squares, linear
     equation solve and eigenvalues. 
     It supports matrix types: Matrix (rectangular matrix); UpperTriangularMatrix;
     LowerTriangularMatrix; DiagonalMatrix; SymmetricMatrix; BandMatrix;
     UpperBandMatrix; LowerBandMatrix; SymmetricBandMatrix; RowVector;
     ColumnVector. 
     The library includes the operations *, +, -, concatenation, inverse, transpose,
     conversion between types, submatrix, determinant, Cholesky decomposition, QR
     triangularisation, singular value decomposition, eigenvalues of a symmetric matrix,
     sorting, fast Fourier and trig. transforms, printing and an interface with Numerical
     Recipes in C. 
BLAS The BLAS (Basic Linear Algebra Subprograms) are high quality "building block"
     routines for performing basic vector and matrix operations. Level 1 BLAS do
     vector-vector operations, Level 2 BLAS do matrix-vector operations, and Level 3
     BLAS do matrix-matrix operations. Because the BLAS are efficient, portable, and
     widely available, they're commonly used in the development of high quality linear
     algebra software, LINPACK and LAPACK for example. 

     If a vendor-optimized version of the BLAS is not available, one can obtain a
     Fortran77 reference implementation from the blas directory on the Home Site below.
     However, this ``model implementation'' of the BLAS is not expected to perform as
     well as a specially tuned implementation on most high-performance computers -- on
     some machines it may give much worse performance -- but it allows users to run
     BLAS-based codes on machines that do not offer any other implementation of the
     BLAS

Pentium Optimized BLAS  Pentium optimized BLAS project is aiming at the optimized BLAS implementation on
     the Intel Pentium platforms. Currently, the BLAS level 1 routines are being
     implemented with GNU assembler. 
BPKIT BPKIT (Block Preconditioning Toolkit) is a toolkit of block preconditioners for the
     iterative solution of linear systems. The most effective general purpose and
     black-box type of preconditioners are available, including block SSOR, block
     tridiagonal ILU, and the block extension of point ILU with level-of-fill. Any of these
     ``global'' preconditioners may be coupled with one of a large collection of ``local''
     preconditioners for approximately or exactly inverting or solving with the diagonal or
     pivot blocks. These include a number of new approximate inverse techniques. By
     combining a global and local preconditioner, a wide variety of preconditionings are
     possible, matched to the difficulty and structure of the problem. 
     The blocks may be stored in dense or sparse formats, and user-defined data
     structures may also be used. Variable block sizes are allowed within a matrix.
     Operations with the blocks call the BLAS, LAPACK, or the sparse BLAS, for
     efficiency across many platforms. The selection of larger blocks usually gives higher
     performance. BPKIT supports the preconditioning of a block of vectors, to enhance
     efficiency when block iterative methods are used. A flexible GMRES iterative method
     is provided in BPKIT for users who do not have an iterative method readily available.
     A test program will read any linear system in Harwell-Boeing format and solve it using
     any combination of preconditioners and parameters specified by the user. This is
     important in the ``experimentation'' stage when trying to solve problems from new
     applications. BPKIT is callable from C/C++ and FORTRAN. 
     BPKIT is not parallel; for large applications it is suitable for the local solvers per
     processor/node or domain.
C++ Matrix Class C++ Matrix Class is a simple, fast, efficient C++ Matrix class designed for scientists
     and engineers. The Array and Matrix classes permit two dimensional arrays to be
     treated as objects that can be included in arithmetic expressions with infix operators
     in much the same way as are scalar values. The array elements are stored in
     memory in row major order. Row (column) vectors are two dimensional arrays with
     just one row (column). A matrix with exactly one row and one column is a scalar. 
 IML++ IML++ is a C++ templated library of modern iterative methods for solving both
     symmetric and nonsymmetric linear systems of equations. The algorithms are fully
     templated in that the same source code works for dense, sparse, and distributed
     matrices. Most of IML++ was coded using g++ 2.7.2, so it should work on Linux.
 LAPACK LAPACK provides routines for solving systems of simultaneous linear equations,
     least-squares solutions of linear systems of equations, eigenvalue problems, and
     singular value problems. The associated matrix factorizations (LU, Cholesky, QR,
     SVD, Schur, generalized Schur) are also provided, as are related computations such
     as reordering of the Schur factorizations and estimating condition numbers. Dense
     and banded matrices are handled, but not general sparse matrices. In all areas,
     similar functionality is provided for real and complex matrices, in both single and
     double precision. 
SparseLib++ SparseLib++ is a C++ class library for efficient sparse matrix computations across
     various computational platforms. The software package consists of matrix classes
     encompassing several sparse storage formats (e.g. compressed row, compressed
     column and coordinate formats), and providing basic functionality for managing
     sparse matrices. The Sparse BLAS Toolkit is used to for efficient kernel
     mathematical operations (e.g. sparse matrix-vector multiply) and to enhance
     portability and performance across a wide range of computer architectures. Included
     in the package are various preconditioners commonly used in iterative solvers for
     linear systems of equations. The focus is on computational support for iterative
     methods (for example, see IML++), but the sparse matrix objects presented here
     can be used in their own right. 
Template Numerical Toolkit (TNT) for linear algebra TNT is a successor to the Lapack++, Sparselib++, IML++, and MV++ packages. Its
goal is to formally integrate these ideas into a generic algorithmic library, supporting
 generic user-defined data types, and increasing its functionality. The toolkit provides
 an integrated collection of generic matrix/vector classes based on components of
 the Standard Template Library (STL), together with specialization of generic
 algorithms for maximal efficiency. 
SVMT The proposed C++ Scalar, Vector, Matrix and Tensor (SVMT) class library standard
     specifies an Application Programmer's Interface (API) for scalar, vector, matrix and
     tensor arithmetic class libraries. The SVMT portable reference library is used by
     SVMT class library developers to verify their own implementations of the proposed
     C++ SVMT class library standard API but may also be used by scientists and
     engineers to develop portable high performance application programs. 

Compiler & Development Tools(Win9x/NT)

 
cygnus Compiler Kit (cygwin32) The Cygwin tools are ports of the popular GNU development tools and utilities for Windows 95, 98, and NT. They function by using the Cygwin library which provides a UNIX-like API on top of the Win32 API
mingw32 "Minimalist" Gnu-Win32. This uses
 Microsoft's runtime (either CRTDLL.DLL or MSVCRT.DLL) for all services. 
egcs Enhanced Gcc including G++(C++), G77(Fortran), Java and Objective C 
djgpp DOS extender (include Win 9x)& gcc(g++) complier 
lcc retagettable C compiler
quincy IDE for mingw32/cygwin32
RHIDE IDE for djgpp
emx, rsx, rsxnt  gcc for DOS, WIN9x/NT and OS/2

Intstalling gcc, g++, g77
 

How to  programming Mixed Languages(FORTRAN & C/C++)

Cross Compiler Services for numerical analysist(including LAPACK/LINPACK)

Other Resource (General Source Code)


Numerical Software Archives

Directories

 
Automatic Differentiation Software

An index of available automatic differentiation software compiled by Chris Bischof and Fred Dilley of Argonne National Laboratory

CFD Codes List.

An index of resources for computational fluid dynamics maintained by Tomasz Plewa at the Max-Planck-Institute f?r Astrophysik.

Control Numerics and Software

An index of information on numerical methods and software in control engineering developed by the German Aerospace Center.

The FXT Page.

Links to FFT codes and related information

Finite Element Mesh Generation

Information on current research and pointers to software maintained by Robert Schneiders of RWTH Aachen.

Interval Computations.

Software for numerical computations based on interval arithmetic.

Linear Programming FAQ

Frequently asked questions about linear programming, posted monthly to the Usenet newsgroup sci.op-research.

numcomp-free-c

A list of resources for numerical computing in C and C++.

Numerical Methods and Related Fields FAQ

Answers to frequently asked questions about numerical analysis and related fields maintained by Steve Sullivan of Mathcom Inc.

Numerical Methods Resource List.

An index of resources for numerical computing maintained by Tomasz Plewa at the Max-Planck-Institute f?r Astrophysik.

The Object-Oriented Numerics Page

A directory of software, projects, publications, conferences and related material related to object-oriented numerical computing.

NEOS Guide to Optimization Software.

A listing of optimization software packages maintained by the Optimization Technology Center of Argonne National Laboratory and Northwestern University.

Nonlinear Programming FAQ

Frequently asked questions about nonlinear optimization, posted monthly to the Usenet newsgroup sci.op-research.

Numerical Evaluation of Special Functions.

An extensive survey of the literature and available software for the evaluation of the higher transcendental functions. Includes more than 600 references organized by topic.

Optimization Software Guide.

A listing of optimization software packages from the book written by Jorge J. More and Stephen J. Wright, SIAM, Philadelphia, 1993.

Problem Solving Environments (PSEs).

Information about PSE research, publications and related topics.

Wavelet Information.

A directory of wavelet information and software maintained by Amara Graps.

Freely Available Packages

 
Algae
A high-level, interpreted language for numerical analysis.
Computational Geometry Algorithms Library
A C++ library of geometric data strctures and algorithms.
Data Curve Fitting
Java applets for linear and nonlinear data fitting.
DifEqu
PC freeware for numerically solving ordinary, functional and partial differential equations, difference equations.
GNU plotutils.
Programs for plotting scientific data and a function library for drawing vector graphics and doing vector graphics animations for Unix systems.
Intel Performance Library Suite.
Includes Math Kernel Library (MKL) with optimized BLAS and FFTs for the Pentium(R) Pro processor. Multiple processors are supported.
LMITOOL.
A user-friendly package for LMI optimization. (LMI problems have matrix variables subject to equality and positive-definiteness constraints and the objective function is linear in these variables.
MathLab 95
Windows 95/NT software for plotting functions in 2D and 3D. Includes L-systems for expressing fractal-like plots in 2D and 3D.
The Matrix Template Library.
Generic components for high performance linear algebra in C++.
Modulef.
A modular Fortran subroutine library for finite element analysis.
MuPAD.
A (parallel) general purpose computer algebra system developed at the University of Paderborn.
PSPLOT.
A Fortran-callable PostScript plotting library.
Scilab.
A high-level system with Matlab-like syntax for system control and signal processing applications. Available for Unix systems as well as for Windows 95 and the Macintosh
TOCHNOG.
A free finite element program by Dennis Roddeman of the University of Innsbruck.
Visual Math for Java.
A graphic calculator and equation solver usable from a Web browser.


Repositories

Free Fortran Software.
Repository of free Fortran software maintained by the Fortran Market.
HREM And Surface Structure Facility at Northwestern University.
A small collection of software for FFTs and related transforms in Fortran and C can be found here.
MGNet Multigrid/domain decomposition Network Repository.
Repository of information and software on multigrid and multidomain methods for solving partial differential equations.
Netlib
A large mathematical software repository.
tatlib.
A repository of statistical software, datasets and other information.
ZIB Electronic Library
Software developed by the Konrad-Zuse-Zentrum f?r Informationstechnik Berlin (ZIB). Includes the Reduce Network Library, CodeLib, and mathematical programming software.
Scientific Applications on Linux.
A directory of scientific software known to work under Linux.