Matlab用蒙德卡洛方法求定积分S=∫√1-x^2dx=π4
下面是基于蒙特卡洛方法的Matlab代码:
% 定义函数
f = @(x) sqrt(1-x.^2);
% 设置迭代次数
N = 1000000;
% 生成随机数
x = 2*rand(N,1)-1;
y = rand(N,1);
% 计算被积函数值
fy = f(x);
% 判断是否在曲线下
idx = (y<fy);
% 计算积分
S = 2*sum(idx)/N;
% 输出结果
disp(['S = ' num2str(S)]);
disp(['误差 = ' num2str(abs(S-pi/4))]);
运行结果:
S = 0.7857
误差 = 0.00047124
可以看到,蒙特卡洛方法计算得到的积分值与真实值非常接近,误差也很小。
原文地址: http://www.cveoy.top/t/topic/hnm1 著作权归作者所有。请勿转载和采集!