ising_2d_simulation, a MATLAB code 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 code 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 code 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 FORTRAN90 version and a MATLAB version.
brownian_motion_simulation, a MATLAB code which simulates Brownian motion in an M-dimensional region.
chuckaluck_simulation, a MATLAB code which simulates the Chuck-a-Luck gambling game.
coin_simulation, a MATLAB code which looks at ways of simulating or visualizing the results of many tosses of a fair or biased coin.
dice_simulation, a MATLAB code which simulates N tosses of M dice, making a histogram of the results.
duel_simulation, a MATLAB code which simulates N repetitions of a duel between two players, each of whom has a known firing accuracy.
fair_dice_simulation, a MATLAB code which simulates N tosses of 2 dice, making a histogram of the results.
fire_simulation, a MATLAB code which simulates a forest fire over a rectangular array of trees, starting at a single random location.
gamblers_ruin_simulation, a MATLAB code which simulates the game of gambler's ruin.
high_card_simulation, a MATLAB code 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.
jai_alai_simulation, a MATLAB code which simulates matches of jai alai.
poisson_simulation, a MATLAB code which simulates a Poisson process in which events randomly occur with an average waiting time of Lambda.
random_walk_1d_simulation, a MATLAB code which simulates a random walk in a 1-dimensional region.
random_walk_2d_avoid_simulation, a MATLAB code which simulates a self-avoiding random walk in a 2-dimensional region.
random_walk_2d_simulation, a MATLAB code which simulates a random walk in a 2-dimensional region.
random_walk_3d_simulation, a MATLAB code which simulates a random walk in a 3-dimensional region.
reactor_simulation, a MATLAB code which a simple Monte Carlo simulation of the shielding effect of a slab of a certain thickness in front of a neutron source. This code was provided as an example with the book "Numerical Methods and Software."
roulette_simulation, a MATLAB code which simulates the spinning of a roulette wheel and the evaluation of certain common roulette bets.
sir_simulation, a MATLAB code 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 code which simulates the cars waiting to get through a traffic light.
truel_simulation, a MATLAB code which simulates N repetitions of a duel between three players, each of whom has a known firing accuracy.
urn_simulation a MATLAB code which simulates an experiment in which k colored marbles are drawn from an urn containing a total of n marbles. The quantity of interest is the number of marbles of each color.