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次
%>>>把你带到这里的密码