我创建了两个函数 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。
最佳答案
“数值正交的工作原理是迭代地将区间分开并逼近每个分区的积分。逼近是通过离散化子区间并使用某种形式的积分逼近(黎曼求和等)来完成的。由于存在一些离散化,因此有会有一些误差,这取决于分区,因此我们最好使积分限制更接近对积分贡献最大的点。”,Brendan Hamm
关于matlab - MATLAB 中积分函数的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32566819/