Lecture VII : Random systems and random walk

Similar documents
CVEN Computer Applications in Engineering and Construction. Programming Assignment #2 Random Number Generation and Particle Diffusion

Scientific Computing: An Introductory Survey

Robotics. Lecture 5: Monte Carlo Localisation. See course website for up to date information.

Chapter 14 Global Search Algorithms

Random Numbers Random Walk

SF1901 Probability Theory and Statistics: Autumn 2016 Lab 0 for TCOMK

Getting Started with MATLAB

Probability and Statistics for Final Year Engineering Students

The Plan: Basic statistics: Random and pseudorandom numbers and their generation: Chapter 16.

Scientific Computing with Case Studies SIAM Press, Lecture Notes for Unit IV Monte Carlo

Catalan Numbers. Table 1: Balanced Parentheses

COMPUTER EXERCISE: POPULATION DYNAMICS IN SPACE September 3, 2013

6.207/14.15: Networks Lecture 5: Generalized Random Graphs and Small-World Model

Introduction to Matlab

PROGRAM EFFICIENCY & COMPLEXITY ANALYSIS

CS227-Scientific Computing. Lecture 3-MATLAB Programming

Note Set 4: Finite Mixture Models and the EM Algorithm

ES-2 Lecture: Fitting models to data

Integrated Math I. IM1.1.3 Understand and use the distributive, associative, and commutative properties.

Photon Maps. The photon map stores the lighting information on points or photons in 3D space ( on /near 2D surfaces)

Objectives. Materials

Advanced Curve Fitting. Eric Haller, Secondary Occasional Teacher, Peel District School Board

Practical 4: The Integrate & Fire neuron

You ve already read basics of simulation now I will be taking up method of simulation, that is Random Number Generation

THE preceding chapters were all devoted to the analysis of images and signals which

Calculus I Review Handout 1.3 Introduction to Calculus - Limits. by Kevin M. Chevalier

Computer exercise 1 Introduction to Matlab.

MODIFIED VERSION OF: An introduction to Matlab for dynamic modeling ***PART 3 ***

CS 3410 Ch 5 (DS*), 23 (IJP^)

Computational Methods. Randomness and Monte Carlo Methods

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #16 Loops: Matrix Using Nested for Loop

Linear algebra deals with matrixes: two-dimensional arrays of values. Here s a matrix: [ x + 5y + 7z 9x + 3y + 11z

Sorting. There exist sorting algorithms which have shown to be more efficient in practice.

Clustering Lecture 5: Mixture Model

PHYSICS 115/242 Homework 5, Solutions X = and the mean and variance of X are N times the mean and variance of 12/N y, so

CSE 547: Machine Learning for Big Data Spring Problem Set 2. Please read the homework submission policies.

Random Number Generators

Advanced Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras

Partial Derivatives (Online)

A Course in Machine Learning

6.001 Notes: Section 4.1

1 Probability Review. CS 124 Section #8 Hashing, Skip Lists 3/20/17. Expectation (weighted average): the expectation of a random quantity X is:

Manipulator trajectory planning

Using Genetic Algorithms to Solve the Box Stacking Problem

VARIANCE REDUCTION TECHNIQUES IN MONTE CARLO SIMULATIONS K. Ming Leung

C++ Data Types. 1 Simple C++ Data Types 2. 3 Numeric Types Integers (whole numbers) Decimal Numbers... 5

Learner Expectations UNIT 1: GRAPICAL AND NUMERIC REPRESENTATIONS OF DATA. Sept. Fathom Lab: Distributions and Best Methods of Display

6.001 Notes: Section 6.1

CS 125 Section #4 RAMs and TMs 9/27/16

CPIB SUMMER SCHOOL 2011: INTRODUCTION TO BIOLOGICAL MODELLING

10.2 Diffusion and Cellular Automata

Homework 4: Clustering, Recommenders, Dim. Reduction, ML and Graph Mining (due November 19 th, 2014, 2:30pm, in class hard-copy please)

(Refer Slide Time: 1:27)

A-SSE.1.1, A-SSE.1.2-

/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Priority Queues / Heaps Date: 9/27/17

Electrical Circuits and Random Walks: Challenge Problems

2 Geometry Solutions

Machine Learning A WS15/16 1sst KU Version: January 11, b) [1 P] For the probability distribution P (A, B, C, D) with the factorization

Lecture 2: Introduction to Numerical Simulation

CMPSCI 187: Programming With Data Structures. Lecture 5: Analysis of Algorithms Overview 16 September 2011

Fall 09, Homework 5

Random Walks. Dieter W. Heermann. Monte Carlo Methods. Dieter W. Heermann (Monte Carlo Methods) Random Walks / 22

Monte Carlo Integration

FMA901F: Machine Learning Lecture 3: Linear Models for Regression. Cristian Sminchisescu

\n is used in a string to indicate the newline character. An expression produces data. The simplest expression

4 Visualization and. Approximation

Allan Variance Analysis of Random Noise Modes in Gyroscopes

Chapter 1. Math review. 1.1 Some sets

Discrete Mathematics and Probability Theory Fall 2013 Midterm #2

5. Tests and results Scan Matching Optimization Parameters Influence

Erdös-Rényi Graphs, Part 2

Algorithms for Euclidean TSP

Machine Learning A W 1sst KU. b) [1 P] For the probability distribution P (A, B, C, D) with the factorization

Introduction to Homogeneous coordinates

Math INTRODUCTION TO MATLAB L. J. Gross - August 1995

Modeling RNA/DNA with Matlab - Chemistry Summer 2007

Automatic Partiicle Tracking Software USE ER MANUAL Update: May 2015

Objectives. 1 Running, and Interface Layout. 2 Toolboxes, Documentation and Tutorials. 3 Basic Calculations. PS 12a Laboratory 1 Spring 2014

Floating-point numbers. Phys 420/580 Lecture 6

How Do Real Networks Look? Networked Life NETS 112 Fall 2014 Prof. Michael Kearns

Updated Sections 3.5 and 3.6

Week - 04 Lecture - 01 Merge Sort. (Refer Slide Time: 00:02)

2D Spline Curves. CS 4620 Lecture 18

Big Data Analytics CSCI 4030

Confidence Intervals. Dennis Sun Data 301

Homework 1 Description CmpE 362 Spring Instructor : Fatih Alagoz Teaching Assistant : Yekta Said Can Due: 3 March, 23:59, sharp

Erdős-Rényi Model for network formation

Statistical Computing (36-350)

6.001 Notes: Section 15.1

TELCOM2125: Network Science and Analysis

MATLAB GUIDE UMD PHYS375 FALL 2010

Filling Space with Random Line Segments

CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics. COMP-202 Unit 1: Introduction

PART 1 PROGRAMMING WITH MATHLAB

Data Stream Processing

Integration. Volume Estimation

Introduction to Matlab. By: Hossein Hamooni Fall 2014

Problem Set 5.5 Solutions

MATH 51: MATLAB HOMEWORK 3

Equations of planes in

Transcription:

Lecture VII : Random systems and random walk I. RANDOM PROCESSES In nature, no processes are truly deterministic. However, while dealing with many physical processes such as calculating trajectories of large objects such as planets, cannonballs or while calculating the current through a simple circuit, we can to a good approximation ignore all the random effects brought in by random processes such as turbulence and electrical heat loss. In certain systems, however, we cannot ignore these random effects as they are what determines the outcome of the process. Some examples to such random processes are : motion of molecules in a solution mixing of gases electron diffusion in metals stock market fluctuations cluster growth (snowflakes, microclusters) Suppose we put a drop of milk in a cup of coffee. If we were to zoom in and follow the motion of a single milk molecule as the molk spreads and diffuses inside the coffee, we would see that it moves in short straight trajectories until it encounters other coffee or milk molecules. After each encounter, we would see that it would change direction in a drastic and unpredictable manner and continue on until the next encounter. Even if we knew all the laws governing the motion of each of the milk and coffee molecules, it would be practically impossible to write down all of the billions of equations of motion and solve them simultaneously. Instead, we simplify the description of the motion of molecules as a probabilistic model, which entails the assignment of probabilities to motion of the motion of the molecules in each dimension. In simulating such a process, we would of course need a program to generate the random s that we need. II. WORKING WITH RANDOM NUMBERS IN OCTAVE In Octave, there are two separate random generators. rand that generates uniformly distributed random s between and 1. and randn that generates normally distributed random s. Numbers chosen from a uniform distribution all have equal probabilities of occuring. The simplest process with a uniform distribution is a coin toss where the probability of getting a head or a tail is identical and equal to 1/2. Thus, the probability of any in a uniform distribution is given by P(x) = c where c is a constant. If the s are defined on a interval whose length is l then c = 1 l such that all the probabilities add up to 1. A normal distribution on the other hand produces s whose probabilities depend on their value as a Gaussian. P(x) = 1 ) ( σ 2π exp (x µ)2 2σ 2 where σ is related to the variance of the distribution and µ is the mean. If rand or randn is called from Octave without any arguments, they produce a single within their domain. Each time you call them, they produce a different.

2 octave:1> rand ans =.5647 octave:2> rand ans =.4178 octave:3> rand ans =.5757 octave:4> randn ans = 1.3561 octave:5> randn ans = 1.1155 octave:6> randn ans =.45327 octave:7> randn ans = -.89322 You can also call these two functions with one or two integer arguments, in which case they create a matrix of random s with the given distribution. octave:1> rand(3) ans =.1771.25417.74946.678631.3569.31275.66949.77739.95114 octave:2> randn(3,2) ans = -1.94691 -.11158.8164.9569-1.33847.2674 octave:3> rand(4,1) ans =.1697.25418.34736.7195 Random generators usually rely on a semi-deterministic method for generating the desired s. To see that rand and randn indeed yield the desired distribution, let s generate increasingly larger sets of random s and let s view their histograms using hist. octave:1> r1=rand(1,1); octave:2> r1=rand(1,1); octave:3> r1=rand(1,1); octave:4> r1=rand(1,1); octave:5> hist(r1,1) octave:6> hist(r1,1) octave:7> hist(r1,1) octave:8> hist(r1,1) The sequence of plots thus produced looks like the following :

3 14 14 12 12 12 12 1 1 1 1 8 8 8 6 8 6 6 6 4 4 4 4 2 2 2 2.1.2.3.4.5.6.7.8.9 1.1.2.3.4.5.6.7.8.9 1.1.2.3.4.5.6.7.8.9 1.1.2.3.4.5.6.7.8.9 1 n=1 n=1 n=1 n=1 The same procedure may be applied with the randn function. 25 3 3 35 2 25 25 3 15 1 2 15 1 2 15 1 25 2 15 1 5 5 5 5-3 -2-1 1 2 3 4-4 -3-2 -1 1 2 3-4 -3-2 -1 1 2 3 4-5 -4-3 -2-1 1 2 3 4 5 n=1 n=1 n=1 n=1 As we can imagine, the larger the set of random s the more accurate the distribution. III. RANDOM WALK Random walk is a simple model to describe motion of particles that undergo random changes of direction during their trajectory. One such particle might be a drunken man who randomly walks around the city picking a random street at every junction. The question is how long it will take for him to reach his house (if ever). This is an example of a two-dimensional random walk on a lattice. An even simpler example is a one dimensional random walk where the walker starts at the origin designated by x = and takes a step of unit length to the left or to the right according to the results of a coin toss. If it s a head, it moves to the left and if it s a tail it moves to the right. How far away from x does the walker end up after N coin tosses. First let s analyze this analytically. Let s consider the average displacement of the particle after a very large of steps, N. x N = N i s i where s i is the displacement at step i. Because we are considering random walk in one dimension, s i = ±1. Because for a very large of steps the walker is just as likely to move to the left as it is to the right, the average total displacement is zero. A more meaningful property to look at perhaps is the average of the square of the total displacement x 2 N = N N s i i j s j For all i = j, the second sum yields zero. For i = j, then x 2 N = N s 2 i = i N 1 = N i

Thus, the square of the total displacement in an N-step random walk is proportional to N. This is in contrast with a free particle moving with a constant velocity for which the displacement scales like the time. Clearly the random walker moves more slowly. In our simulations, N is synonymous with time. We may generalize the above equation as x 2 = 2dDt. where D is called the diffusion constant, d is the dimensionality of the problem, t is time in seconds and 2 is just a convenient convention. Let s now prove this by writing a small code. Before writing the code, let s think of some relevant issues : The average : The average x 2 N is going to be calculated over N random walks. N random walks will be generated and the square of the cumulative displacement will be calculated. Such and average should be calculated for various N s and collected. Single random walk : Each random walk produced should be long enough to provide good statistics. On the other hand they shouldn t be so long as to make the simulation prohibitively long. Coin toss : Octave is not able to generate events with discrete outcomes. It can only produce a continuum of s with either a uniform or a normal distribution. We can however convert the outcome of the function rand to a binary outcome in the following way : for each step of the random walk, we generate a uniformly distributed random using rand. If it s smaller than.5, we take a step to the left. If it s larger than.5, we take a step to the right. Statistics : For extremely large N s a x 2 N -vs-t plot should give us an exactly straight line whose slope is 2D. However, because our N s are finite, the line will not be exactly straight. In order to get the slope with some statistical error, we ll make a fit to the resulting data using polyval and polyval in Octave 4 A. polyfit and polyval In interpreting results from experiments or computer simulations, instead of viewing raw data, we prefer to fit these data to functional forms that are based on some physical intuition. In Octave there are two functions that help us do this. octave:1> data=load data-fit; octave:2> [p,s]=polyfit(data(:,1),data(:,2),2); octave:3> p p = 1.4483.1956.552 octave:4> s.normr ans =.18576 octave:5> y=polyval(p,data(:,1)); octave:6> plot(data(:,1),data(:,2), b*;raw data;,data(:,1),y, r-;fit; ) with the outcome 1.2 1.8.6.4.2-1 -.5.5 1

5 In the above code segment, we notice the following new elements : 1. load reads a text file from memory and assigns it to the designated variable, in this case data. 2. polyfit(x,y,n) does a least-squares fit of the arrays x and y to a polynomial of order n. p is an array containing the coefficients of the resulting polynomial and s is a structure that contains various matrices and arrays related to the fitting procedure. In particular, the element of s called normr accessed as demonstrated is a measure of the quality of the fit. 3. polyval takes an array as its first argument, another array as its second argument, interprets the first as the coefficients of a polynomial and evaluates the values of this polynomial at the points supplied by the second array. In other words octave:1> p=[1 2 3]; x=1:1; octave:2> y=polyval(p,x); is equivalent to octave:3> p(1)*x.^2+p(2)*x+p(3); B. The code for finding the diffusion constant, D To calculate the average of x 2 over many random walks, we need a loop that creates many random walks, say Nrw, of Nsteps at every turn and extract x 2 from each. We ll then add up all those values and divide by Nrw to find the average. We ll then repeat this for many different N s and plot x 2 versus N. We ll finally perform the fitting procedure discribed above. As we gather from the above explanation, we need three nested loops in our code. Here, nested means one inside the other. One loop to generate each random walk, of length Nsteps One loop to calculate the average of x 2 over many random walks, of length Nrw And one loop to obtain x 2 for different N s, of length Ns C. Single random walk in one dimension To generate a single random walk in one dimension, we need to simulate a coin toss. That is to say, for each step of the random walk, we need create an event which has only to outcomes with equal probability. Such an event might be simulated using rand as follows : for each step of the random walk we call rand. Now the s that are smaller than.5 are as likely to come up as s that are larger than.5. We may thus make a move to the left if the that comes up is smaller than.5 and to the right if it is larger than.5. We could pack this discrete form of rand into a function called, rand disc. Instead of writing a function that returns a single every time and call it several times from an external loop to create the random walk, it is much more efficient to create all the elements of the random walk at once. In this section, we ll also see a striking example of how efficient vector operations are in comparison to loops. First let s write a straightforward function that contains a loop in its body : function r=rand_disc_loop(n,num) rn=[]; for n=1:n if (rand<num) rn=[rn;-1]; else rn=[rn;1];

6 endif endfor endfunction and now let s try to get rid of the loop using specialized array operations coded in Octave function r=rand_disc(n,num) rn=rand(n,1); r=(rn<num); li=find(r == ); r(li)=-1; endfunction There are many new concepts that we see in this new function : It takes in two arguments : the first one is the obvious length of the random walk and the second is the offset of the probability. If we want to create an uneven random walk where the probability of going to the left is different from the probability of going to the right, then we could set num to be a different than.5. If for example, our walker is three times as likely to go left than right then we could call our function with num equal to.75. The construct r=(rn<num); is a logical assignment. It checks the thruth value of the clause in parentheses for each element of the array rn and assigns a value of 1 is it s true and a value of if it is false. The find statement checks for the logical clause in parantheses next to it and makes a list of those elements of the array that satisfy this statement. Next, let s compare their efficiency : octave:1> tic;rand_disc_loop(1,.5);toc ans =.86784 octave:2> tic;rand_disc(1,.5);toc ans =.4124 octave:3> tic;rand_disc_loop(3);toc ans = 8.8272 octave:4> tic;rand_disc(3,.5);toc ans =.1195 octave:5> tic;rand_disc_loop(5,.5);toc ans = 25.911 octave:6> tic;rand_disc(5,.5);toc ans =.19542 tic and toc are keywords which measure the time (in seconds) it takes to execute the Octave commands written inbetween. As you can see the loops take a much longer time to perform the same operation that specialized array operations in Octave take. Moreover, this discrepancy grows as the of operations increase. D. Putting everything together We finally put all of the above pieces of code together and write the following script which we callrandom walk 1d.m

7 ## Random walk in one dimension x2ave=[]; Nrw=3; Nstepsmax=1; inc=1; beg=1; dt=1; for Nsteps=beg:inc:Nstepsmax; Nsteps x2=; for m=1:nrw r=random_disc(nsteps,.5); x2+=sum(r)^2; endfor x2ave=[x2ave;x2/nrw]; endfor hold off plot(dt*[beg:inc:nstepsmax],x2ave, b*;; ) [p,s]=polyfit(dt*[beg:inc:nstepsmax],x2ave,1); pval=polyval(p,dt*[beg:inc:nstepsmax]); hold on plot(dt*[beg:inc:nstepsmax],pval, r- ); hold off D=p(1)/2 Let s analyze the piece of code above : 1. In the constants section, we set Nrw and Nsteps. Because we are going to generate random walks with different Nsteps values, we set the beginning value, the increment and the final value for Nsteps. We also give a value to the time step dt which serves only the purpose of given the diffusion constant D proper units. 2. x2ave is going to be the array of x 2 values for x 2 over all Nrw random walks for different Nsteps and therefore we initialize it to an empty array at the beginning. 3. Inside the loop over Nsteps, we first display Nsteps so that we can watch the algorithm advance. Then we set x2 to zero since this is the variable that s going to contain the total x 2 from all the random walks. 4. The inner loop over m goes over all the random walks and finds the total displacement square for each random walk adding them up. In the end we divide it by the of random walks we have used and append it to x2ave. 5. At the end, we perform the fitting procedure described above. 6. The parts that are written in blue could be turned into functions which would make the above code look tidier and more modular. Now, let s run this code with two different Nrw values, Nrw=1 and Nrw=5.

8 12 11 1 1 9 8 8 7 <x^2> 6 <x^2> 6 5 4 4 3 2 2 1 1 2 3 4 5 6 7 8 9 1 N 1 2 3 4 5 6 7 8 9 1 N Nrw=2 D=.55 units 2 /sec s.normr=1131.8 Nrw=1 D=.49 units 2 /sec s.normr=791.38 For this simple random walk problem we expect D to be.5. As you can see from the comparison above, D is closer to.5 for a larger Nrw. This is a reflection of better statistics and it also reflects itself in the quality of the fit given by s.normr. E. Uneven random walk Let s now run the same code but let s increase the probability of stepping to the right slightly by calling our user-defined function rand disc as rand disc(nsteps,.45). The resulting plot is no longer a straight line. This is because the motion now is somewhere between a real random walk and unhindered motion with constant velocity. We thus expect the average square displacement to go like an exponent of t, which is between 1 and 2. Let s call it α. In order to determine α, we perform the following logarithm trick. x 2 = Ct α log( x 2 ) = log C + α log t If we now make a first-order fit to the logarithms, the slope gives us α. 14 13.5 13 12.5 log(<x^2>) 12 11.5 11 1.5 1 9.5 9 6.5 7 7.5 8 8.5 9 9.5 In the example above, for num=.45, the slope is found to be 1.96. This means that even for a very small offset in the probability, the motion approaches that of a free particle very fast. log(t)