Monte Carlo integration (hit or miss) to find the area of a circle of radius R
Hi everyone. Trying to solve an old exam topic regarding Monte Carlo integration, I wrote the following code for which I based it on a code from a professor in the C language. For R = 1 it worked so I assume I did it correctly. Then I tried R > 1 and the results were wrong compared to the formula πR^2 so I tried a few modifications by trial and error method. I fixed the problem and it seems to works correctly but there is a modification that I don’t understand. If you could help me understand this it would be great. Thank you in advance.
clear, clc, format short
%———- Computation for R = 1 ———-
R = 1;
N = 100000;
insideCircle = 0;
for i = 1:N
x = rand(1);
y = rand(1);
if (x^2 + y^2) < R
insideCircle = insideCircle + 1;
end
end
Area_MC = 4*insideCircle/N;
Area = pi*R^2;
error = 100*abs(Area – Area_MC)/Area;
fprintf(‘ntExact areatt%fntMonte Carlo areat%fntPercentage errort%.2f%%n’,Area,Area_MC,error);
%———- Computation for R > 1 (e.g. R = 4 but you can try any real value) ———-
R = 4;
N = 100000;
insideCircle = 0;
for i = 1:N
x = rand(1)*R;
y = rand(1)*R;
if (x^2 + y^2) < R
insideCircle = insideCircle + 1;
end
end
Area_MC = 4*R^3*insideCircle/N; % Modification needed that I don’t understand (I had to multiply with R^3)
Area = pi*R^2;
error = 100*abs(Area – Area_MC)/Area;
fprintf(‘ntExact areatt%fntMonte Carlo areat%fntPercentage errort%.2f%%n’,Area,Area_MC,error);Hi everyone. Trying to solve an old exam topic regarding Monte Carlo integration, I wrote the following code for which I based it on a code from a professor in the C language. For R = 1 it worked so I assume I did it correctly. Then I tried R > 1 and the results were wrong compared to the formula πR^2 so I tried a few modifications by trial and error method. I fixed the problem and it seems to works correctly but there is a modification that I don’t understand. If you could help me understand this it would be great. Thank you in advance.
clear, clc, format short
%———- Computation for R = 1 ———-
R = 1;
N = 100000;
insideCircle = 0;
for i = 1:N
x = rand(1);
y = rand(1);
if (x^2 + y^2) < R
insideCircle = insideCircle + 1;
end
end
Area_MC = 4*insideCircle/N;
Area = pi*R^2;
error = 100*abs(Area – Area_MC)/Area;
fprintf(‘ntExact areatt%fntMonte Carlo areat%fntPercentage errort%.2f%%n’,Area,Area_MC,error);
%———- Computation for R > 1 (e.g. R = 4 but you can try any real value) ———-
R = 4;
N = 100000;
insideCircle = 0;
for i = 1:N
x = rand(1)*R;
y = rand(1)*R;
if (x^2 + y^2) < R
insideCircle = insideCircle + 1;
end
end
Area_MC = 4*R^3*insideCircle/N; % Modification needed that I don’t understand (I had to multiply with R^3)
Area = pi*R^2;
error = 100*abs(Area – Area_MC)/Area;
fprintf(‘ntExact areatt%fntMonte Carlo areat%fntPercentage errort%.2f%%n’,Area,Area_MC,error); Hi everyone. Trying to solve an old exam topic regarding Monte Carlo integration, I wrote the following code for which I based it on a code from a professor in the C language. For R = 1 it worked so I assume I did it correctly. Then I tried R > 1 and the results were wrong compared to the formula πR^2 so I tried a few modifications by trial and error method. I fixed the problem and it seems to works correctly but there is a modification that I don’t understand. If you could help me understand this it would be great. Thank you in advance.
clear, clc, format short
%———- Computation for R = 1 ———-
R = 1;
N = 100000;
insideCircle = 0;
for i = 1:N
x = rand(1);
y = rand(1);
if (x^2 + y^2) < R
insideCircle = insideCircle + 1;
end
end
Area_MC = 4*insideCircle/N;
Area = pi*R^2;
error = 100*abs(Area – Area_MC)/Area;
fprintf(‘ntExact areatt%fntMonte Carlo areat%fntPercentage errort%.2f%%n’,Area,Area_MC,error);
%———- Computation for R > 1 (e.g. R = 4 but you can try any real value) ———-
R = 4;
N = 100000;
insideCircle = 0;
for i = 1:N
x = rand(1)*R;
y = rand(1)*R;
if (x^2 + y^2) < R
insideCircle = insideCircle + 1;
end
end
Area_MC = 4*R^3*insideCircle/N; % Modification needed that I don’t understand (I had to multiply with R^3)
Area = pi*R^2;
error = 100*abs(Area – Area_MC)/Area;
fprintf(‘ntExact areatt%fntMonte Carlo areat%fntPercentage errort%.2f%%n’,Area,Area_MC,error); monte carlo integration, hit or miss, area of a cirlcle MATLAB Answers — New Questions