gpt4 book ai didi

python - 高斯拉盖尔积分如何适用于大范围?

转载 作者:行者123 更新时间:2023-11-28 19:09:58 25 4
gpt4 key购买 nike

我想知道高斯拉盖尔如何适用于大限值。例如,我在两个维度上都有一个从 (0, +inf) 开始的二维函数。当我使用高斯时python 中的 laguerre 通过将权重和横坐标加起来对函数进行采样,我没有得到接近我使用的东西,比如 dblquad。以下是集成的示例代码。 lgw 输出权重和横坐标,然后使用两个 for 循环将其用于二重积分。我看不出像 x, y = 1e8, 1e8 这样的样本点是如何被捕获的。增加 n 不会产生高横坐标(至少不会像要求的那样高)。

kzas,kzws = lgw(n)
for kta,ktw, in zip(kzas,kzws):
for kza,kzw in zip(kzas,kzws):
fval = integrand(kza,kta)
wghtx = kzw*numpy.exp(kza)
wghty = ktw*numpy.exp(kta)
integral += wghtx*wghty*fval

有人可以解释如何捕获更高的样本点吗?我没有正确使用正交吗?我可以集成具有小限制的功能,比如 1e2 左右。如果限制很高怎么办,比如 1e15?我从理论上看到了定义,但我没有看到更高的权重和横坐标是如何捕获的。

谢谢

编辑:不可能进一步减少我的功能。被积函数的不同部分是用数值计算的,所以我没有任何解析表达式。我只能说函数是平滑的并且具有正弦曲线行为。

最佳答案

如果我阅读 this正确地,第 n 个拉盖尔多项式的根是有界的

n + (n-1) 平方根

这意味着您必须达到极高的度数才能从被积函数中较远的点进行采样。

我想,如果您的被积函数不会振荡得太快,您可以尝试重新缩放坐标轴。更具体地说,您可以使用

调整被积函数的支持

\lambda\int_0^\infty f(\lambda x) dx =\int_0^\infty f(x) dx

在您的情况下,您可能希望使用相当大的\lambda。

更具体地说,尝试将最内层循环中的第一行替换为

  fval = lam*lam * integrand(lam*kza, lam*kta)

关于python - 高斯拉盖尔积分如何适用于大范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41832871/

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