matlab蒙特卡洛计算圆周率,误差绘图
时间: 2023-08-29 08:05:42 浏览: 72
下面是使用蒙特卡洛方法计算圆周率的 MATLAB 代码```matlab
n =100000; % 投次数
x = rand, 1); % 在 [0, 1] 区间内随机生成 x 坐标
y = rand(n, 1); % 在 [0, 1] 区间内随机生成 y 坐标
d = sqrt(x.^2 + y.^2); % 计算点到原点的距离
hits = sum(d <= 1); % 统计落在单位圆内的点数
pi_approx = 4 * hits / n; % 计算 π 的近似值
```
误差可以用近似值与真实值之间的差来衡量,绘制误差随投点次数增加的变化曲线可以使用下面的代码:
```matlab
n_values = 1000:1000:100000; % 不同的投点次数
pi_true = pi * ones(size(n_values)); % π 的真实值
pi_approx = zeros(size(n_values)); % 存储近似值
for i = 1:length(n_values)
n = n_values(i);
x = rand(n, 1);
y = rand(n, 1);
d = sqrt(x.^2 + y.^2);
hits = sum(d <= 1);
pi_approx(i) = 4 * hits / n;
end
error = abs(pi_approx - pi_true); % 计算误差
plot(n_values, error);
xlabel('投点次数');
ylabel('误差');
```
运行这段代码可以得到误差随投点次数变化的图像。随着投点次数的增加,误差逐渐减小,但是减小的速度减缓。
阅读全文