我正在尝试计算以下积分
使用 GNU 科学图书馆中的广义 Gauss-Laguerre 正交例程。这里是广义拉盖尔函数,并且. 我不确定如何选择正交点的数量,不同的数字给出不同的值。
有什么建议?
(编辑:MWE)
#include <stdio.h>
#include <stdlib.h>
#include <gsl/gsl_math.h>
#include <gsl/gsl_integration.h>
#include <gsl/gsl_sf_laguerre.h>
struct data { double b; int c; double d; int e; };
double f(double y, void* userdata) {
struct data *d = (struct data *) userdata;
return gsl_sf_laguerre_n(d->c, d->b, y) * gsl_sf_laguerre_n(d->e, d->d, y);
}
int main() {
const double a = -0.5;
const double b = 0.5;
const int c = 0;
const double d = 0.5;
const int e = 0;
const size_t num_nodes = (c + e + 1) / 2;
const gsl_integration_fixed_type *T = gsl_integration_fixed_laguerre;
gsl_integration_fixed_workspace *w
= gsl_integration_fixed_alloc(T, num_nodes, 0.0, 1.0, 0.5 * a, 0.0);
struct data params = { b, c, d, e };
gsl_function F;
F.function = &f;
F.params = ¶ms;
double result;
gsl_integration_fixed(&F, &result, w);
printf("%12.e\n", result);
gsl_integration_fixed_free(w);
}