FuncDesigner
Encyclopedia
FuncDesigner is a computer algebra system (CAS) written as a Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

 module. It is cross-platform software (Linux, Windows, Mac OS X etc), with a completely free (BSD
BSD licenses
BSD licenses are a family of permissive free software licenses. The original license was used for the Berkeley Software Distribution , a Unix-like operating system after which it is named....

) license.

FuncDesigner uses NumPy arrays and SciPy
SciPy
SciPy is an open source library of algorithms and mathematical tools for the Python programming language.SciPy contains modules for optimization, linear algebra, integration, interpolation, special functions, FFT, signal and image processing, ODE solvers and other tasks common in science and...

 sparse matrices, and thus depends on the NumPy and SciPy modules, which are also freely available. FuncDesigner can be easily used in any Python program, and allows recursive import of variables/formulas from other files.

The CAS enhances the RAD abilities of the Python language for developing scientific software, especially for
  • (possibly large-scale sparse) numerical optimization  (via OpenOpt
    OpenOpt
    OpenOpt is an open-source framework for numerical optimization, nonlinear equations and systems of them. It is licensed under the BSD license, making it available to be used in both open- and closed-code software. The package already has some essential ....

    , another tool of FuncDesigner developers)
  • solving systems of
    • linear equation systems, dense and sparse
    • non-linear equation systems (one of solvers, interalg, is capable of obtaining all solutions)
    • ordinary differential equation systems
  • interpolation
    Interpolation
    In the mathematical field of numerical analysis, interpolation is a method of constructing new data points within the range of a discrete set of known data points....

  • integration
    Integral
    Integration is an important concept in mathematics and, together with its inverse, differentiation, is one of the two main operations in calculus...

     (possibly with guaranteed precision by interalg)
  • uncertainty analysis
    Propagation of uncertainty
    In statistics, propagation of error is the effect of variables' uncertainties on the uncertainty of a function based on them...

  • interval analysis
    Interval arithmetic
    Interval arithmetic, interval mathematics, interval analysis, or interval computation, is a method developed by mathematicians since the 1950s and 1960s as an approach to putting bounds on rounding errors and measurement errors in mathematical computation and thus developing numerical methods that...



One of FuncDesigner key features is Automatic differentiation
Automatic differentiation
In mathematics and computer algebra, automatic differentiation , sometimes alternatively called algorithmic differentiation, is a set of techniques to numerically evaluate the derivative of a function specified by a computer program...

(AD) (not to be confused with Numerical differentiation
Numerical differentiation
In numerical analysis, numerical differentiation describes algorithms for estimating the derivative of a mathematical function or function subroutine using values of the function and perhaps other knowledge about the function.-Finite difference formulae:...

 via finite-differences derivatives approximation
Finite difference
A finite difference is a mathematical expression of the form f − f. If a finite difference is divided by b − a, one gets a difference quotient...

 and symbolic differentiation provided by Maxima, SymPy
SymPy
SymPy is a Python library for symbolic computation. The stated goals of the library are to become a full-featured computer algebra system and to keep a simple code base to promote extensibility and comprehensibility. SymPy is written in Python....

 etc), that seriously benefits modelling and solving some numerical optimization problems and systems of linear, non-linear, ordinary differential equations.

For those parts of code that cannot be covered by automatic differentiation (e.g. connected from other programming languages, have cycles "while"), FuncDesigner involves DerApproximator - a package for getting/checking derivatives via finite-difference stencil approximation.

Also, FuncDesigner powers SpaceFuncs - tool for 2D, 3D, N-dimensional geometric modeling with possibilities of parametrized calculations, numerical optimization and solving systems of geometrical equations, made by same developers.

You can try all the modules mentioned above on-line (without installation) via the SAGE-server (unfortunately, it often hangs due to high load).

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK