# Computational mathematics

The branch of mathematics dealing with problems involving the use of a computer. The meaning now assigned to the term cannot be considered as definite, since this domain of mathematics is at present in intensive development brought about by the ever-increasing range of computer applications. The term is often understood to mean the theory of numerical methods and algorithms for the solution of typical mathematical problems. This meaning was in fact widely accepted in the initial stage, when the use of electronic computers made it necessary to impose new conditions on numerical methods; the main problem at that stage was to develop new, "computer-friendly" methods. In what follows the term "computational mathematics" will be used in its former, wider meaning.

Computational mathematics may be regarded as consisting of three main fields. The first is connected with the applications of electronic computers to the various fields of scientific and everyday activity, and may be described as analysis of mathematical models. The second is the development of methods and algorithms for solving typical mathematical problems involved in the investigation of mathematical models. The third field deals with the simplification of the man-computer interaction, including the theory and practice of programming computer problems and of automatic programming the problems to be solved by the computer.

The analysis of mathematical models includes the study of the formulation of the problem, the choice of the model, the analysis and processing of input information, the numerical solution of mathematical problems which arise during the study of models, the analysis of results of computations, and, finally, the problem of realizing the results obtained.

The problem of choosing the model must be solved subject to the following condition. The degree of reliability with which a given effect or class of effects can be studied starting from the results of model analysis must correspond to the accuracy of the initial information. This means that as more accurate information is obtained in the course of time, the construction of the model must be correspondingly improved or even replaced by an altogether different one. The methods of processing initial information are of essential importance to such problems, and the methods of mathematical statistics are mostly used for this purpose.

Mathematical models played an important part in the advancement of science; the use of mathematical models is now common in a wide range of human activities (including design, control, prediction, etc.).

The study of real phenomena by analysis of artefact models usually involves the development of numerical methods and the use of electronic computers. Thus, an important part of computational mathematics is to obtain numerical solutions of the mathematical problems posed, mostly of typical mathematical problems (computational mathematics in the restricted sense of the term).

As an example of typical mathematical problems which are often encountered in applications one may mention problems in algebra; the more important ones include numerical methods for solving sets of linear algebraic equations (in particular, large sets), the inversion of a matrix, finding the eigen values of a matrix (both the first few values — the partial problem of eigen values — and all eigen values — the complete problem of eigen values). Other examples are numerical differentiation and numerical integration of functions of one or several variables (cf. Differentiation, numerical; Integration, numerical); numerical methods for solving ordinary differential equations and integral equations (cf. Differential equation, ordinary; Integral equation), as well as the study and comparative analysis of numerical methods of various kinds, e.g. the Adams method or the Runge–Kutta method. A large number of studies concern numerical methods for solving partial differential equations (cf. Hyperbolic partial differential equation, numerical methods; Parabolic partial differential equation, numerical methods; Elliptic partial differential equation, numerical methods). Here the main subject are the so-called "economical" methods, i.e. methods which yield results by performing a relatively small number of operations.

Numerical optimization methods are a fast developing subject in computational mathematics. An optimization problem involves the study of extremal (highest or lowest) values of functionals on sets which usually have a fairly complicated structure (see, for example, Extremal problems, numerical methods). Of prime importance are the problems of mathematical programming (including linear and dynamic programming) to which many problems in economics can be reduced. Of similar nature are the minmax problems (and the corresponding numerical methods) arising in problems of operational studies (cf. Operations research) and the theory of games (cf. Games, theory of). Especially complicated problems of the minmax-minmax type are involved in the solution of multi-step (dynamically evolving) games. In such cases even mathematical experiments (playing through the various courses of action open to the players) without the use of powerful computers is impossible.

The application of computers to the solution of complex problems, especially large size problems, gave rise to one of the main subjects in the theory of numerical methods — the study of the sensitivity of methods and algorithms to errors of different kinds, including rounding-off errors. (Cf. Stability of a computational algorithm; Stability of a computational process.)

Inverse problems, such as the determination of \$x\$ in the equation \$Ax=b\$ from the available information on the operator \$A\$ and the element \$b\$, often prove to be unstable (ill-posed); small errors in input data may yield large errors in \$x\$. Moreover, inverse problems often have no solution for all values of \$b\$ so that, if an approximate value of \$b\$ is specified, it must be borne in mind that a formal solution to the problem need not exist. For unstable problems one had to give special definitions of approximate solutions, and special methods for finding such solutions had to be developed. Such problems include a wide class of problems in the automatization of processing of experimental results (cf. Ill-posed problems).

Questions of optimization methods for problem solving are of major importance in most subjects of computational mathematics. They are particularly important in large size problems (e.g. problems involving a large number of variables).

Owing to the widespread use of electronic computers the circle of customers keeps increasing; hence the tendency to establish automatization of a kind which would allow for a certain degree of ignorance of numerical methods on the part of the customers. This means that algorithms, classification of algorithms and standard programs of solution of typical problems must now meet novel requirements.

In several applied sciences the contemporary rate of scientific and technological progress would be unthinkable were it not for the development of numerical methods and for the use of electronic computers (see, for example, Gas dynamics, numerical methods of).

The principal task of the theory of programming may be said to be the achievement of more comfortable man-machine relations, even though both this view and the specific directions of research must be radically modified owing to the development of computer technology. The succession of several generations of computers brought about changes in the course of development of programming.

Compilation of programs in the internal machine language soon gave way to the compilation of standard programs (cf. Standard program) and program complexes for the solution of typical problems. Since such programs are used to solve a wide class of programs, programming a method of solution is no longer needed, and it is sufficient to feed in the input information. However, the input of such information and the compilation of non-standard blocks still require a significant amount of programming in machine language (cf. Machine-oriented language).

With the advent of the faster machines of the following generation the number of problems submitted for solution correspondingly increased; as a result a bottleneck in the man-machine interaction appeared — the speed of programming. A new stage in programming was born — the creation of algorithmic languages with translators (compilers) from the algorithmic to the machine language (cf. Algorithmic language). Since algorithmic languages greatly resemble everyday human language, their use considerably simplified the programming and substantially increased the circle of customers.

In parallel with the creation of universal algorithmic languages (Algol; Fortran), several problem-oriented languages (cf. Problem-oriented language) were developed for the use of individual types of consumers — say, those dealing with the processing of economic information (Cobol). Specialized languages were developed for the following reason: Universal languages and compilers intended for solving a wide class of problems sometimes only very weakly reflect the specific features of individual groups of important problems, with the result that the potentialities of the machine are not efficiently used.

As the speed of electronic computers increased even further, it was the information input and output devices that became the bottleneck of the man-machine system; their slow operation rendered the high-output performance of the central processing unit quite useless. Systems for the simultaneous solution of several problems on the same machine represented an attempt to overcome this difficulty. Another reason for creating such systems was the fact that a large number of customers had to be able to use the machine at the same time (this was particularly important in the use of computers as automatic control systems). All this, as well as a number of other reasons, was responsible for the advent of a new kind of programming — system programming. Its principal task is to produce operational systems which monitor the operation of the machine, extend its potentialities by means of programming and offer to the customer an additional service not provided for in the apparatus itself: The possibility of input and output as problems are being solved, the automatization of reduction of output, the creation of graphic records, visual displays, a dialogue with the machine, and simultaneous solution of several problems by the machine (time-sharing).

Computers are also employed to an increasing extent in working with large numbers of machines in combination, including machines of different kinds, input mechanisms, communication channels between machines and a user and, in part, physical installations. Such highly productive systems are used, for example, to solve problems in economics and in processing the results of physical experiments involving the input and the processing of large amounts of information.

The development of computational systems, in particular information systems and automatic control systems, represents one of the most actual scientific problems of the present day.