Matlab蒙特卡罗循环积分



我试图在MATLAB中使用蒙特卡罗方法编写计算积分的函数。我对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)

相关内容

  • 没有找到相关文章

最新更新