特殊函数
本章描述了GSL特殊函数库。库里包括的计算值例程有艾里函数、贝塞尔函数、克劳森函数、库仑波函数、耦合系数、道森函数、德拜函数、二重对数、椭圆积分、雅可比椭圆函数、误差函数、指数积分、费米狄拉克函数、伽马函数、盖根堡函数、埃尔米特多项式和函数、超几何函数、拉盖尔函数、勒让德函数和球面谐波、Psi(Digamma)函数、同步加速器函数、传递函数、三角函数和泽塔函数。每个例程还计算函数计算值中数值误差的估计值。
本章中的函数都声明在单独的头文件中,如gsl_sf_airy.h,gsl_sf_bessel.h等。可使用gsl_sf.h包含完整的头文件集。
7.1 用法
特殊函数有两种调用约定,一种是返回函数数值的自然形式,另一种是返回错误代码的错误处理形式。这两种类型的函数提供了访问相同底层代码的替代方法。
自然形式只返回函数的值,可以直接用在数学表达式中。例如,下面的函数将计算贝塞尔函数J0(x)的值:
double y = gsl_sf_bessel_J0(x); |
无法使用此方法获得错误代码或估计错误。为了允许访问这些信息,另一种错误处理函数形式是返回值和存储在一个可修改的错误参数中:
gsl_sf_result result; int status = gsl_sf_bessel_J0_e(x , &result); |
错误处理函数带有后缀_e。表示错误的返回值包括向上溢出、向下溢出或精度损失等。如果没有错误,错误处理函数将返回GSL_SUCCESS。
7.2 gsl_sf_result结构体
特殊函数的错误处理形式总是随着计算结果的值计算误差估计值。因此,提供了用于合并值和误差估计的结构。结构体在头文件gsl_sf_result.h中声明。
结构体包含值和错误字段。
typedef struct { double val; double err; } gsl_sf_result; |