gpt4 book ai didi

python - 为数值积分提供路径点

转载 作者:行者123 更新时间:2023-12-01 02:24:34 25 4
gpt4 key购买 nike

Scipy 的 quad 函数可用于对不定积分进行数值积分。然而,某些函数的大部分区域都在相当窄的范围内(例如,似然函数),而 quad 有时会错过它。当它确实错过了非 0 的函数范围时,它返回积分近似为 0。

例如,从 0 到 inf 的对数正态分布的曲线下面积应该为 1。这里它的几何平均值为 1,但不是 2:

from scipy.integrate import quad
from scipy.stats import lognorm
from scipy import inf

quad(lambda x: lognorm.pdf(x, 0.01, scale=1), 0, inf)
# (1.0000000000000002, 1.6886909404731594e-09)

quad(lambda x: lognorm.pdf(x, 0.01, scale=2), 0, inf)
# (6.920637959567767e-14, 1.2523928482954713e-13)

我经常事先知道大部分质量在哪里。我如何告诉quad从那里开始?如果这不可能,我会接受其他工具。

最佳答案

points quad的参数方法可用于告诉它应该在哪里(大约)查看。它不能与不合适的积分一起使用,因此需要将积分范围分割成直到最后一点的有限区间,再加上无限尾部。

points = (0.1, 1, 10, 100)
func = lambda x: lognorm.pdf(x, 0.01, scale=2) # works for other scales too
integral = quad(func, 0, points[-1], points=points)[0] + quad(func, points[-1], np.inf)[0]

点的几何序列(如本例所示)对于各种尺度来说都足够了。

关于python - 为数值积分提供路径点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47535425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com