Matlab quad
函数中似乎存在使用求积公式评估积分的错误。正在运行
quad(@(x) (2/sqrt(2*pi))*(x.^2).*exp(-x.^2/2), 0, 10)
回复1.0000
这是正确答案,但将上限提高到100,即
quad(@(x) (2/sqrt(2*pi))*(x.^2).*exp(-x.^2/2), 0, 100)
返回3.4715e-8
。 quadl
似乎也是如此。但是,integral
命令似乎工作正常。这是一个已知问题还是我错过了什么?
答案 0 :(得分:2)
阅读quad
documentation,看起来使用quadgk
可能是个好主意。在这种情况下,它使用积分间隔(0,100)给出正确的结果:
>> quadgk(@(x) (2/sqrt(2*pi))*(x.^2).*exp(-x.^2/2), 0, 100)
ans =
1.0000
答案 1 :(得分:1)
在octave上运行quad
和quadl
的两个表达式,结果为1.机器可能出现问题。