Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 光滑单峰函数与GSL的数值积分?_C++_C_Numerical Methods_Gsl - Fatal编程技术网

C++ 光滑单峰函数与GSL的数值积分?

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

有人能给出一个在有限区间内用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 *) 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 = &alpha;

    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