Octave 利用倍频程的蒙特卡罗模拟中的平均解

Octave 利用倍频程的蒙特卡罗模拟中的平均解,octave,montecarlo,Octave,Montecarlo,我正在编写一个代码,用一个倍频程的蒙特卡罗模拟,在给定的一组边界条件下找到拉普拉斯方程的解。我已经编写了寻找单一解决方案的初始代码,但这需要运行多次,然后求平均值以获得一个好的、平滑的解决方案。这是我需要帮助的部分,因为我不知道该怎么做。我写的代码是: 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

我正在编写一个代码,用一个倍频程的蒙特卡罗模拟,在给定的一组边界条件下找到拉普拉斯方程的解。我已经编写了寻找单一解决方案的初始代码,但这需要运行多次,然后求平均值以获得一个好的、平滑的解决方案。这是我需要帮助的部分,因为我不知道该怎么做。我写的代码是:

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次,然后求出平均值并绘制平均解决方案。我对脚本编写还比较陌生,所以如果您能提供任何建议,我将不胜感激

谢谢,
Steve

为什么不把它放到另一个循环中并存储变量呢

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;
av_=0;
计数=0;
对于i=1:100次
%>>>把你带到这里的密码