MATLAB中积分函数的奇异行为

时间:2015-09-14 14:02:50

标签: matlab integration

我创建了两个函数fx和fy,如下所示:

fx = @(x) ncx2pdf(x, 10, 1);
fy = @(y) ncx2pdf(y + 25, 10, 10);

然后,我按如下方式定义fs函数:

shift = 0
fs = @(s) fx(s) .* fy(shift - s)

请注意,fs始终为正(两个概率密度函数的乘积)。如果我计算:

integral(fs, -Inf, 100)

我获得了真值0.0413,但如果我计算

integral(fs, -Inf, 1000)

我获得0.为什么使用积分函数会发生这种奇怪的行为?请注意,如果我计算

integral(fs, -Inf, Inf) 

我获得了真值0.0413。

1 个答案:

答案 0 :(得分:-1)

"数值正交通过迭代地分开间隔并近似每个分区的积分来工作。通过离散子间隔并使用某种形式的积分近似(黎曼和等)来完成近似。由于存在一些离散化,因此会出现一些错误,这取决于分区,因此我们最好将我们的积分限制更接近对积分贡献最大的点。",Brendan Hamm

参考:http://www.mathworks.com/matlabcentral/answers/242910-strange-behaviour-in-integral-function-in-matlab#answer_192302