ISING_2D_SIMULATION is a MATLAB program which carries out a Monte Carlo simulation of a 2D Ising model.
A 2D Ising model is defined on an MxN array of cells. Each cell can have a "charge" or "spin" of +1 or -1. A neighborhood of a cell is defined to be itself, and the four immediate neighbors to the north, south, east, and west. A cell may change its charge; the likelihood of doing so depends on whether the charge of the neighbors agrees with the charge of the cell.
This program begins with a random assignment of charges to the cells. It then computes the neighbor agreement at each cell. It then updates the entire configuration in one step, using the neighbor agreement to determine the likelihood of flipping.
Currently, the chance that a cell will "flip" is determined from a table of probabilities based on the number of agreeing neighbors:
Agree | 1 | 2 | 3 | 4 | 4 |
---|---|---|---|---|---|
Prob | 0.98 | 0.85 | 0.50 | 0.15 | 0.02 |
ising_2d_simulation m n iterations thresh seedwhere
Note that the user might also want to vary the transition probabilities. This cannot currently be done on the command line, and requires editing the program and recompiling it.
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
ISING_2D_SIMULATION is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a MATLAB version.
BROWNIAN_MOTION_SIMULATION, a MATLAB program which simulates Brownian motion in an M-dimensional region.
DUEL_SIMULATION, a MATLAB program which simulates N repetitions of a duel between two players, each of whom has a known firing accuracy.
GAMBLERS_RUIN_SIMULATION, a MATLAB program which simulates the game of gambler's ruin.
HIGH_CARD_SIMULATION, a MATLAB program which simulates a situation in which you see the cards in a deck one by one, and must select the one you think is the highest and stop.
ISING_3D_SIMULATION, a FORTRAN90 library which carries out a Monte Carlo simulation of a 3D Ising model.
LORENZ_SIMULATION, a MATLAB program which solves the Lorenz equations and displays the solution, for various starting conditions.
MANDELBROT, a MATLAB program which generates an ASCII PPM image of the Mandelbrot set;
POISSON_SIMULATION, a MATLAB library which simulates a Poisson process in which events randomly occur with an average waiting time of Lambda.
RANDOM_WALK_1D_SIMULATION, a MATLAB program which simulates a random walk in a 1-dimensional region.
RANDOM_WALK_2D_AVOID_SIMULATION, a MATLAB program which simulates a self-avoiding random walk in a 2-dimensional region.
RANDOM_WALK_2D_SIMULATION, a MATLAB program which simulates a random walk in a 2-dimensional region.
RANDOM_WALK_3D_SIMULATION, a MATLAB program which simulates a random walk in a 3-dimensional region.
REACTOR_SIMULATION, a MATLAB program which a simple Monte Carlo simulation of the shielding effect of a slab of a certain thickness in front of a neutron source. This program was provided as an example with the book "Numerical Methods and Software."
SIR_SIMULATION, a MATLAB program which simulates the spread of a disease through a hospital room of M by N beds, using the SIR (Susceptible/Infected/Recovered) model.
TRAFFIC_SIMULATION, a MATLAB program which simulates the cars waiting to get through a traffic light.
TRUEL_SIMULATION a MATLAB program which simulates N repetitions of a duel between three players, each of whom has a known firing accuracy.
XISING, a C program which simulates the variation in ferromagnetism in a material, displaying the results using X Windows.
You can go up one level to the MATLAB source codes.