0
我正在編寫一個代碼,用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」該值這個價值,繼續這個過程一百次左右,然後將它們平均並等高線繪製平均解。我對腳本相當陌生,所以你可以給任何建議,將不勝感激。
謝謝你,史蒂夫