2016-04-03 8 views
0

Octaveのモンテカルロシミュレーションを使用して、与えられた境界条件でラプラシアンの解を見つけるコードを書いています。私は単一のソリューションを見つけるための初期コードを書いていますが、これはかなりの回数実行してから、すばらしい、滑らかなソリューションを得るために平均化する必要があります。それは私が助けを必要とする部分です、私はそれについて行く手がかりを持っていないので、私が書いたコードです。つまりOctaveを使用したモンテカルロシミュレーションでの平均化ソリューション

a=20; 
s=1 

for (m=s:s:a-s); 
for (n=s:s:a-s); 

x=m; 
y=n; 

for (i=1:5000) 
R=randi(4); 
if (R==1) 
    xnew=x+s; 
    ynew=y; 
elseif (R==2) 
    xnew=x-s; 
    ynew=y; 
elseif (R==3) 
    xnew=x; 
    ynew=y+s; 
elseif (R==4) 
    xnew=x; 
    ynew=y-s; 
endif 

%hold on; 
%figure(1); 
%plot([x xnew],[y ynew]) 

x=xnew; 
y=ynew; 

if (x==0); 
    u(n,m)=sin(pi*y/a); 
    break 
elseif (x==a); 
    u(n,m)=0; 
    break 
elseif (y==0); 
    u(n,m)=0; 
    break 
elseif (y==a); 
    u(n,m)=0; 
    break 
else 
    continue; 
endif 

endfor 


endfor 
endfor 

figure(2); 
contour(u) 

、私がやりたいことは、「U」のこの値記録である(溶液)、再度プログラムを実行し、「U」の記録、その値、およびこのプロセスを100回ほど続けてから、それらを平均化し、平均解をプロットします。私はかなり新しいスクリプトを作成していますので、アドバイスをいただければ幸いです。あなただけの別のループや店舗の変数に入れていないのはなぜ

おかげで、 スティーブ

答えて

0

av_u=0; 
count=0; 
for i=1:hundred times 
    %>>>your code to get u here<<< 
    av_u=av_u+u; 
    count=count+1; 
end 
av_u=av_u/count; 
関連する問題