2016-04-03 6 views
0

Ich schreibe einen Code, um die Lösung für die Laplace-Funktion mit einer gegebenen Reihe von Randbedingungen mit Hilfe einer Monte-Carlo-Simulation in Octave zu finden. Ich habe den ursprünglichen Code geschrieben, um einzelne Lösungen zu finden, aber dies muss einige Male ausgeführt werden und dann gemittelt werden, um eine schöne, reibungslose Lösung zu erhalten. Das ist der Teil, mit dem ich Hilfe brauche, da ich keine Ahnung habe, wie ich das anstellen soll. Der Code, den ich geschrieben habe, ist:Averaging-Lösungen in Monte Carlo Simulation mit 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) 

Mit anderen Worten, was ich tun möchte, ist Datensatz dieser Wert von „u“ (die Lösung), das Programm erneut aus, diesen Wert von „u“ aufzunehmen, und fahre mit diesem Prozess hundertmal fort, dann mittle sie aus und zeichne die durchschnittliche Lösung auf. Ich bin ziemlich neu in der Skripterstellung, daher wird jeder Rat, den Sie geben können, sehr geschätzt.

Danke, Steve

Antwort

0

Warum Sie es in eine andere Schleife und speichern Variablen setzen nicht nur?

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;