Also found in: Wikipedia.
mathematical software[¦math·ə¦mad·ə·kəl ′sȯft‚wer]
The collection of computer programs that can solve equations or perform mathematical manipulations. The developing of mathematical equations that describe a process is called mathematical modeling. Once these equations are developed, they must be solved, and the solutions to the equations are then analyzed to determine what information they give about the process. Many discoveries have been made by studying how to solve the equations that model a process and by studying the solutions that are obtained.
Before computers, these mathematical equations were usually solved by mathematical manipulation. Frequently, new mathematical techniques had to be discovered in order to solve the equations. In other cases, only the properties of the solutions could be determined. In those cases where solutions could not be obtained, the solutions had to be approximated by using numerical calculations involving only addition, subtraction, multiplication, and division. These methods are called numerical algorithms. These algorithms are often straightforward, but they are usually tedious and require a large number of calculations, usually too many for a human to perform. There are also many cases where there are too many equations to write down. See Algorithm, Numerical analysis
The advent of computers and high-level computer languages has allowed many of the tedious calculations to be performed by a machine. In the cases where there are too many equations, computer programs have been written to manipulate the equations. A numerical algorithm carried out by a computer program can then be applied to these equations to approximate their solutions. Mathematical software is usually divided into two categories: the numerical computation environment and the symbolic computation environment. However, many software packages exist that can perform both numerical and symbolic computation.
Mathematical software that does numerical computations must be accurate, fast, and robust. Accuracy depends on both the algorithm and the machine on which the software is run. Most mathematical software uses the most advanced numerical algorithms. Robustness means that the software checks to make sure that the user is inputting reasonable data, and provides information during the performance of the algorithm on the convergence of the calculated numbers to an answer. Mathematical software packages can approximate solutions to a large range of problems in mathematics, including matrix equations, nonlinear equations, ordinary and partial differential equations, integration, and optimization. Mathematical software libraries contain large collections of subroutines that can solve problems in a wide range of mathematics. These subroutines can easily be incorporated into larger programs.
Early computers were used mainly to perform numerical calculations, while the mathematical symbolic manipulations were still done by humans. Now software is available to perform these mathematical manipulations. Most of the mathematical software packages that perform symbolic manipulations can also perform numerical calculations. Software can be written in the package to perform the numerical calculations, or the calculations can be performed after the symbolic manipulations by putting numbers into the symbolic formulas. Mathematical software that is written to solve a specific problem using a numerical algorithm is usually computationally more efficient than these software environments. However, these software environments can perform almost all the commonly used numerical and symbolic mathematical manipulations. See Symbolic computing
Parallel computers have more than one processor that can work on the same problem at the same time. Parallel computing allows a large problem to be distributed over the processors. This allows the problem to be solved in a smaller period of time. Many numerical algorithms have been converted to run on parallel computers. See Computer programming, Concurrent processing, Digital computer, Distributed systems (computers), Multiprocessing, Software