【发布时间】:2013-09-26 19:48:41
【问题描述】:
Matlab quad 函数中似乎有一个错误,用于使用求积公式计算积分。运行
返回1.0000这是正确答案,但将上限增加到100,即
回馈3.4715e-8。 quadl 似乎也是如此。但是,integral 命令似乎工作正常。这是一个已知问题还是我遗漏了什么?
【问题讨论】:
-
有趣。仅将下限增加到 .01 会返回 1
标签: matlab
Matlab quad 函数中似乎有一个错误,用于使用求积公式计算积分。运行
返回1.0000这是正确答案,但将上限增加到100,即
回馈3.4715e-8。 quadl 似乎也是如此。但是,integral 命令似乎工作正常。这是一个已知问题还是我遗漏了什么?
【问题讨论】:
标签: matlab
在octave 上使用quad 和quadl 运行两个表达式,结果为1。机器可能有问题。
【讨论】:
阅读quad 的documentation,看来改用quadgk 可能是个好主意。在这种情况下,它给出了积分区间 (0,100) 的正确结果:
>> quadgk(@(x) (2/sqrt(2*pi))*(x.^2).*exp(-x.^2/2), 0, 100)
ans =
1.0000
【讨论】:
quad 函数都这么不稳定。
quadgk 是否始终是最佳选择,或者何时选择每个变体
x 大于 38.7,此函数的计算结果为零。 quad 如果公差选项设置得足够小,实际上可以使用,例如1e-12。但quadgk(或较新版本中的integral)几乎总是更好的首选。