高斯拉格尔集成如何适用于大范围?

时间:2017-01-24 16:07:49

标签: python numpy scipy integration gauss

我想知道高斯拉格尔如何在很大的范围内工作。例如, 我有两个维度的(0,+ inf)2D函数。当我使用高斯 python中的laguerre通过对权重和横坐标进行抽样来对它们进行总结,我不会得到一些接近我所使用的东西,比如dblquad。下面是集成的示例代码。 lgw输出权重和横坐标,然后通过使用两个for循环在双重积分中使用。 我没有看到如何捕获像x,y = 1e8,1e8这样的样本点。增加n不会产生高横坐标(至少不是很高)。

<?php
    $YPE_slugs_names = array();
    $YPE_tags = get_the_tags();
    if ($YPE_tags) {
        foreach($YPE_tags as $YPE_tag) {
            $YPE_slugs_names[] = $YPE_tag->slug[$YPE_tag->name];
        }
    }
?>

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

由于

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

1 个答案:

答案 0 :(得分:0)

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

的限制

n +(n-1)sqrt(n)

这意味着你必须从疯狂的高度到你的被积函数中更偏远的点进行采样。

如果你的被积函数没有太快地振荡,你可以尝试的是重新调整轴,我想。更具体地说,您可以使用

调整被积函数的支持

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

在你的情况下,你可能想要使用相当大的\ lambda。

更具体地说,尝试用

替换最里面循环中的第一行
  fval = lam*lam * integrand(lam*kza, lam*kta)