Matlab monte carlo 循环集成

Matlab monte carlo integration for loop

我正在尝试使用 MATLAB 中的 Monte Carlo 方法编写计算积分的函数。我对 MATLAB 不够熟悉,无法理解为什么我每次都会遇到不同的集成问题。这是我的代码:

f=@(x)exp(-(x-3).^2);
N = 1000; %random samples 
a = 0; % lower bound 
b = 3; %upper bound

x2=linspace(0,3,1000);
syms z % zero vector holder to find max y value
z = zeros(size(x2));
z = f(x2);
y = f(b).*rand(1,1000);
x = a +(b-a)*rand(1,N);
count = 0;
for k=1:numel(x);
    %produce random x coordinate 
    if y(k) <= f(x);
        count= count +1;
    end
end
count;
i = (b-a)/N*sum(f(x));

当我 运行 这样做时,i 值每次都会改变,但我希望使用 for 循环计算积分。谢谢

你最后i的计算是错误的,应该是

count/numel(x) * max(z) * (b-a)