资源简介

清华大学随机过程的课程大作业,主要内容是带反射吸收壁的二维布朗运动理论建模与仿真,压缩包里面含有matlab的源代码,我自己写的详细的课程报告,还有代码的说明文档,相当详细而且一定可以运行,还有我详细的理论推导。是学习布朗运动非常好的资料

资源截图

代码片段和文件信息

clear all; clc; close all;
%length of wall
xmax=10;
ymax=20;
%probality of absorption
p = 0.5;
%num of particles
totalnum=1000; 
totaltime=1000;
%resistance flag
f_flag =1;%ref:0:no resis; 1:resis
%prelocate length
x(totalnum) = 0;
y(totalnum) = 0;
x_x(totaltime) = 0;% var for tracking
y_y(totaltime) = 0;% var for tracking
direction(totalnum)=0;  

for i=1:totalnum
    x(i)=xmax*rand; 
    y(i)=ymax*rand; 
end
figure;%initial
scatter(xy);    

for m = 1:totaltime
    for i=1:totalnum
        direction(i)=fix(4*rand)+1; 
    end
    
    for i=1:totalnum
     if(direction(i)==1)
         if(f_flag == 1)
            x(i)=x(i)+(1-m/1000)*randn;
         else
            x(i)=x(i)+randn; 
         end
         %---partial_border-----
         probability=rand;
            %absorotion
            if(probability<=p)   
                directionabsorb=fix(3*rand)+1;
                if(x(i)<=0)
                   switch directionabsorb
                        case 1
                            x(i)=xmax-abs(randn);                
                        case 2                
                            x(i)=xmax-abs(randn)/sqrt(2);
                            y(i)=y(i)+abs(randn)/sqrt(2);       
                        case 3               
                            x(i)=xmax-abs(randn)/sqrt(2);
                            y(i)=y(i)-abs(randn)/sqrt(2);   
                    end 
                end

                 if(x(i)>=xmax)
                   switch directionabsorb          
                        case 1
                            x(i)=abs(randn);               
                        case 2                
                            x(i)=abs(randn)/sqrt(2);
                            y(i)=y(i)-abs(randn)/sqrt(2);
                        case 3                
                            x(i)=abs(randn)/sqrt(2);
                            y(i)=y(i)+abs(randn)/sqrt(2);     
                  end
                 end

                 if(y(i)>=ymax)
                   switch directionabsorb
                        case 1                
                            y(i)=abs(randn);                
                        case 2                
                            x(i)=x(i)+abs(randn)/sqrt(2);
                            y(i)=abs(randn)/sqrt(2);               
                        case 3               
                            x(i)=x(i)-abs(randn)/sqrt(2);
                            y(i)=abs(randn)/sqrt(2);   
                    end
                end

                if(y(i)<=0)
                   switch directionabsorb
                        case 1                
                            y(i)=ymax-abs(randn);                
                        case 2               
                            x(i)=x(i)+abs(randn)/sqrt(2);
                            y(i)=ymax-abs(randn)/sqrt(2);               
                        case 3 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       13537  2015-12-04 19:33  Main.m
     文件          82  2015-12-04 19:36  main说明.txt
     文件      774996  2015-12-04 19:24  随机过程实验报告.pdf

评论

共有 条评论