matlab蒙特卡洛计算圆周率,误差绘图
时间: 2023-08-29 19:05:44 浏览: 85
用蒙特卡洛方法计算圆周率
5星 · 资源好评率100%
下面是使用Monte Carlo方法计算圆周率的MATLAB代码:
```
N = 10000; % 抛点数
x = rand(1, N);
y = rand(1, N);
r = sqrt(x.^2 + y.^2);
inside = sum(r <= 1);
pi_estimate = 4 * inside / N;
```
其中`N`为抛点数,`x`和`y`为随机抛点的坐标,`r`为抛点到原点的距离,`inside`为落在圆内的点数,`pi_estimate`为计算得到的圆周率近似值。
为了绘制误差图,可以使用以下代码:
```
N_list = [100, 1000, 10000, 100000, 1000000];
pi_list = zeros(size(N_list));
for i = 1:length(N_list)
N = N_list(i);
x = rand(1, N);
y = rand(1, N);
r = sqrt(x.^2 + y.^2);
inside = sum(r <= 1);
pi_list(i) = 4 * inside / N;
end
error = abs(pi_list - pi);
loglog(N_list, error, 'o-');
xlabel('Number of points');
ylabel('Absolute error');
```
其中`N_list`为不同的抛点数,`pi_list`为对应的计算结果,`error`为计算结果与真实值之间的绝对误差,使用`loglog`函数绘制误差随抛点数增加的变化趋势图。
阅读全文