A **computer simulation** or a **computer model** is a computer program which attempts to simulate an abstract model of a particular system. Computer simulations have become a useful part of modeling many natural systems in physics, chemistry and biology, human systems in economics and social science and in the process of engineering new technology, to gain insight into the operation of those systems. Traditionally, the formal modeling of systems has been via a mathematical model, which attempts to find analytical solutions to problems which enables the prediction of the behaviour of the system from a set of parameters and initial conditions. Computer simulations build on, and are a useful adjunct to purely mathematical models in science and technology and entertainment.

Table of contents |

2 Types of computer simulation 3 Computer simulation in science 4 Computer simulation in practical contexts |

Computer simulation was developed hand-in-hand with the rapid growth of the computer, following its first large-scale deployment during the Manhattan Project in World War II to model the process of nuclear detonation. Computer simulation is often used an adjunct to, or substitution for, modeling systems for which simple closed form analytic solutions are not possible. There are many different types of computer simulation; the common feature they all share is the attempt to generate a sample of representative scenarios for a model in which a complete enumeration of all possible states of the model would be prohibitive or impossible.

Computer simulations generally fall into several different types:

- A
*discrete simulation*, or*stochastic simulation*, manages only events and time. Most computer, logic-test and fault-tree simulations are this type. In this type of simulation, the simulator maintains a queue of events sorted by the simulated time they should occur. The simulator reads the queue and triggers new events as each event is processed. It is not important to execute the simulation in real time. It's often more important to be able to access the data produced by the simulation, to discover logic defects in the design, or the sequence of events. - An
*analog simulation*uses differential equations (either partial or ordinary), implemented numerically. Periodically, the simulation program recalculates all the equations, and uses the numbers to change the state and output of the simulation. Most flight and racing-car simulations are of this type. This type may also be used to simulate electrical circuits. Originally, these kinds of simulations were actually implemented on analog computers, where the differential equations could be represented directly by various electrical components such as op-amps. By the late 1980s, however, most "analog" simulations were run on conventional digital computers that emulate the behavior of an analog computer. - A special type of discrete simulation which does not rely on a model with an underlying equation, but can nonetheless be represented formally, is
*agent-based simulation*. In agent-based simulation, the individual entities (such as molecules, cells, trees or consumers) in the model are represented directly (rather than by their density or concentration) and possess an internal*state*and set of behaviors or*rules*which determine how the agent's state is updated from one time-step to the next.

Examples of types of computer simulations in science, which are derived from an underlying mathematical description:

- a numerical simulation of differential equations which can't be solved analytically, theories which involve continuous systems such as phenomena in cosmology, fluid dynamics fall into this category (this is an
*analog*simulation in the above sense) - a stochastic simulation, typically used for discrete systems where events occur probabilisticallyally, and which can't be described directly with differential equations (this is a
*discrete*simulation in the above sense). Phenomena in this category include genetic drift, biochemical or gene regulatory networks with small numbers of molecules. (see also: Monte Carlo method).

- agent based simulation has been used effectively in ecology, where it is often called
*individual based modeling*and has been used in situtations for which individual variability in the agents cannot be neglected, such as population dynamics of salmon and trout (most purely mathematical models assume all trout behave identically).