C++ 光滑单峰函数与GSL的数值积分?
有人能给出一个在有限区间内用GSL对光滑单峰函数进行数值积分的简单例子吗?这里有一个例子,在[01000]上积分1/(t^2+1)。 它使用最简单规则集的自适应集成,因为没有奇点C++ 光滑单峰函数与GSL的数值积分?,c++,c,numerical-methods,gsl,C++,C,Numerical Methods,Gsl,有人能给出一个在有限区间内用GSL对光滑单峰函数进行数值积分的简单例子吗?这里有一个例子,在[01000]上积分1/(t^2+1)。 它使用最简单规则集的自适应集成,因为没有奇点 #include <stdio.h> #include <math.h> #include <gsl/gsl_integration.h> double f (double x, void * params) { double alpha = *(double *) par
#include <stdio.h>
#include <math.h>
#include <gsl/gsl_integration.h>
double f (double x, void * params) {
double alpha = *(double *) params;
double f = alpha / (x * x + 1);
return f;
}
int
main (void)
{
gsl_integration_workspace * w
= gsl_integration_workspace_alloc (1000);
double result, error;
double alpha = 1.0;
gsl_function F;
F.function = &f;
F.params = α
gsl_integration_qag (&F,
0.0, 1000.0,
0.0, 1e-7, 1000,
GSL_INTEG_GAUSS15,
w,
&result, &error);
printf ("result = % .18f\n", result);
printf ("estimated error = % .18f\n", error);
gsl_integration_workspace_free (w);
return 0;
}
这很有意义,因为积分应该是关于pi/2的。你说的平滑是什么意思?lipschitz?@SteveCox说它有一些高阶的连续导数,比如说10阶导数。也是解析的吗?还是n次可微?@SteveCox我不能说任何关于分析性的东西。您只能假设连续导数。您不希望导数也是单峰的,对吗?为了清楚第七个参数,您应该使用宏“GSL_INTEG_gaus15”。@ViniciusMiranda很好
result = 1.569796327128230029
estimated error = 0.000000000092546021