// PIMC oscillator, Evgeny Demidov, 1 July 2004 import java.awt.*; import java.awt.event.*; public class @file extends java.applet.Applet implements ActionListener{ int nt = 100, nt2=nt-2, np = 200, np2 = np/2, k = 1, w, h, h2, y0, lbSize = 50, it = 0, io, P[], stP=200; double x[], stX=.01; long generTime; Button btStep; public void init() { w = getSize().width; h = getSize().height - lbSize; h2 = h/2; y0 = h2 + lbSize; x = new double[nt]; for (int i = 0; i < nt; i++) x[i] = 0; P = new int[np]; for (int i = 0; i < np; i++) P[i] = 0; String s=getParameter("k"); if (s != null) k = Integer.parseInt(s); btStep = new Button("Step"); btStep.addActionListener(this); add(btStep); mc(); } public void mc(){ double dx, xnew, xr, ds; generTime = System.currentTimeMillis(); io = 0; for (int i = 0; i < 1000000; i++){ int r = (int)(nt*Math.random()); if (r<1) r=1; if (r>nt2) r=nt2; xr = x[r]; dx = 1*(Math.random()-.5); xnew = xr + dx; ds = dx*(2*(xnew+xr-x[r+1]-x[r-1]) + xnew+xr ); if ( (ds<0) || (Math.random() < Math.exp(-ds)) ){ x[r] = xr = xnew; io++;} int l = (int)(30*xr) + np2; if (l>0 && l