当前位置: 首页 > 工具软件 > Airy > 使用案例 >

GSL 系列 4 — 特殊函数 2 — 艾里 (Airy) 函数

华哲茂
2023-12-01

0 写在前面

对以下变量参见:GSL 系列 4 — 特殊函数 1 — 用法,结果类,模式

gsl_sf_result * result
gsl_mode_t mode

1 头文件

若无特别说明,本篇代码均来自头文件 gsl_sf_airy.h

2 艾里 (Airy) 函数和导数

2.1 基本介绍1

2.1.1 艾里方程(斯托克斯方程)

y ′ ′ − x y = 0 y^{\prime \prime}-x y=0 yxy=0

2.1.2 艾里函数

此方程有两个线性独立解:
Ai ⁡ ( x ) = 1 π ∫ 0 ∞ cos ⁡ ( t 3 3 + x t ) d t \operatorname{Ai}(x)=\frac{1}{\pi} \int_{0}^{\infty} \cos \left(\frac{t^{3}}{3}+x t\right) d t Ai(x)=π10cos(3t3+xt)dt
B i ( x ) = 1 π ∫ 0 ∞ e ( − t 3 3 + x t ) + sin ⁡ ( t 3 3 + x t ) d t \mathrm{Bi}(x)=\frac{1}{\pi} \int_{0}^{\infty} e^{\left(-\frac{t^{3}}{3}+x t\right)}+\sin \left(\frac{t^{3}}{3}+x t\right) d t Bi(x)=π10e(3t3+xt)+sin(3t3+xt)dt

2.1.3 艾里函数正极限

x x x 趋于正无穷,
Ai ⁡ ( x ) ∼ e − 2 3 x 3 / 2 2 π x 1 / 4 \operatorname{Ai}(x) \sim \frac{e^{-\frac{2}{3} x^{3 / 2}}}{2 \sqrt{\pi} x^{1 / 4}} Ai(x)2π x1/4e32x3/2
Bi ⁡ ( x ) ∼ e 2 3 x 3 / 2 π x 1 / 4 \operatorname{Bi}(x) \sim \frac{e^{\frac{2}{3} x^{3 / 2}}}{\sqrt{\pi} x^{1 / 4}} Bi(x)π x1/4e32x3/2

2.2 计算函数

int gsl_sf_airy_Ai_e(const double x, const gsl_mode_t mode, gsl_sf_result * result);
double gsl_sf_airy_Ai(const double x, gsl_mode_t mode);

int gsl_sf_airy_Bi_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
double gsl_sf_airy_Bi(const double x, gsl_mode_t mode);

/* scaled Ai(x):
 *                     Ai(x)   x < 0
 *   exp(+2/3 x^{3/2}) Ai(x)   x > 0
 *
 * exceptions: none
 */
int gsl_sf_airy_Ai_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
double gsl_sf_airy_Ai_scaled(const double x, gsl_mode_t mode);


/* scaled Bi(x):
 *                     Bi(x)   x < 0
 *   exp(-2/3 x^{3/2}) Bi(x)   x > 0
 *
 * exceptions: none
 */
int gsl_sf_airy_Bi_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
double gsl_sf_airy_Bi_scaled(const double x, gsl_mode_t mode);

2.4 计算导数

int gsl_sf_airy_Ai_deriv_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
double gsl_sf_airy_Ai_deriv(const double x, gsl_mode_t mode);

int gsl_sf_airy_Bi_deriv_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
double gsl_sf_airy_Bi_deriv(const double x, gsl_mode_t mode);

/* scaled derivative Ai'(x):
 *                     Ai'(x)   x < 0
 *   exp(+2/3 x^{3/2}) Ai'(x)   x > 0
 *
 * exceptions: none
 */
int gsl_sf_airy_Ai_deriv_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
double gsl_sf_airy_Ai_deriv_scaled(const double x, gsl_mode_t mode);


/* scaled derivative:
 *                     Bi'(x)   x < 0
 *   exp(-2/3 x^{3/2}) Bi'(x)   x > 0
 *
 * exceptions: none
 */
int gsl_sf_airy_Bi_deriv_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
double gsl_sf_airy_Bi_deriv_scaled(const double x, gsl_mode_t mode);

2.5 计算零点

计算艾里函数的第 s s s 个零点

/* Zeros of Ai(x)
 */
int gsl_sf_airy_zero_Ai_e(unsigned int s, gsl_sf_result * result);
double gsl_sf_airy_zero_Ai(unsigned int s);


/* Zeros of Bi(x)
 */
int gsl_sf_airy_zero_Bi_e(unsigned int s, gsl_sf_result * result);
double gsl_sf_airy_zero_Bi(unsigned int s);

计算艾里函数导数的第 s s s 个零点

/* Zeros of Ai'(x)
 */
int gsl_sf_airy_zero_Ai_deriv_e(unsigned int s, gsl_sf_result * result);
double gsl_sf_airy_zero_Ai_deriv(unsigned int s);


/* Zeros of Bi'(x)
 */
int gsl_sf_airy_zero_Bi_deriv_e(unsigned int s, gsl_sf_result * result);
double gsl_sf_airy_zero_Bi_deriv(unsigned int s);

参考


  1. https://zh.wikipedia.org/wiki/%E8%89%BE%E9%87%8C%E5%87%BD%E6%95%B0 ↩︎

 类似资料: