Tenkte jeg kunne prøve å programmere dette selv.
Fikk det nesten til, men jeg får ikke plottet punktene mine. Kan noen si hvor feilen min ligger?
Og ja dette er Matlab =) Takker på forhånd for alle tips og hjelp
Kode: Velg alt
function MonteCarl( a )
% Genererer a antall x og y verdier mellom -1 og -1.
x = 2*rand(a,1)-1;
y = 2*rand(a,1)-1;
% Setter sammen x og y koordinatene til punkter.
h = [x y];
z = 0;
w = 0;
% Sorterer punktene som ligger utenfor enhetssirkelen og innenfor (r<1)
% Altså x^2 + y^2 < 1.
for i=1:a
r = h(i,1)^2+h(i,2)^2;
if r<1
z = z + 1;
p(z,1:2) = [ h(i,1) h(i,2) ];
else
w = w + 1;
q(w,1:2) = [ h(i,1) h(i,2) ];
end
end
% A er arealet av sirkelen.
A = (z/a)*4;
% D er avviket fra den egentlige verdien
D = abs(pi-A);
fprintf('Antall punkter innenfor sirkelen %d \n',z)
fprintf('Antall punkter utenfor sirkelen %d \n',w)
fprintf('Sirkelens areal er ca %d med et avvik på %f \n \n',A,D)
% Tegner en sirkel med radius 1.
[x,y,z] = cylinder(1,10^3);
plot(x(1,:),y(1,:))
hold on
axis equal
% Sjekker om vi har mer enn null punkter innenfor sirkelen
% Om dette stemmer plotter vi disse punktene i rød.
if z>0
plot(p(:,1),p(:,2),'r+')
end
% Sjekker om vi har mer enn null punkter utenfor sirkelen
% dersom vi har det, plottes disse fargene i blå.
if w>0
plot(q(:,1),q(:,2),'b+')
end
hold off
end