贝塞尔函数:_j0_j1_jn_y0_y1_yn

计算第一种或第二种贝塞尔函数,顺序为 0、1 或 n。 贝赛耳函数通常用于电磁波理论的数学学科中。

语法

double _j0(
   double x
);
double _j1(
   double x
);
double _jn(
   int n,
   double x
);
double _y0(
   double x
);
double _y1(
   double x
);
double _yn(
   int n,
   double x
);

参数

x
浮点值。

n
Bessel 函数的整数顺序。

返回值

每个例程将返回 x贝塞尔函数。 如果 x_y0_y1_yn 函数中为负,则例程会将 errno 设置为 EDOM,将 _DOMAIN 错误消息打印到 stderr并返回 HUGE_VAL。 您可通过使用 _matherr来修改错误处理。

备注

_j0_j1_jn 例程将返回第一种贝塞尔函数:顺序分别为 0、1 和 n。

输入 SEH 异常 _matherr 异常
± QNaN, IND INVALID _DOMAIN

_y0_y1_yn 例程将返回第二种 Bessel 函数:顺序分别为 0、1 和 n。

输入 SEH 异常 _matherr 异常
± QNaN, IND INVALID _DOMAIN
± 0 ZERODIVIDE _SING
|x| < 0.0 INVALID _DOMAIN

默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态

要求

例程 必需的标头
<cmath> (C++)、<math.h>(C、C++)

有关兼容性的详细信息,请参阅 兼容性

示例

// crt_bessel1.c
#include <math.h>
#include <stdio.h>

int main( void )
{
   double x = 2.387;
   int n = 3, c;

   printf( "Bessel functions for x = %f:\n", x );
   printf( "   Kind   Order  Function     Result\n\n" );
   printf( "   First  0      _j0( x )     %f\n", _j0( x ) );
   printf( "   First  1      _j1( x )     %f\n", _j1( x ) );
   for( c = 2; c < 5; c++ )
      printf( "   First  %d      _jn( %d, x )  %f\n", c, c, _jn( c, x ) );
   printf( "   Second 0      _y0( x )     %f\n", _y0( x ) );
   printf( "   Second 1      _y1( x )     %f\n", _y1( x ) );
   for( c = 2; c < 5; c++ )
      printf( "   Second %d      _yn( %d, x )  %f\n", c, c, _yn( c, x ) );
}
Bessel functions for x = 2.387000:
   Kind   Order  Function     Result

   First  0      _j0( x )     0.009288
   First  1      _j1( x )     0.522941
   First  2      _jn( 2, x )  0.428870
   First  3      _jn( 3, x )  0.195734
   First  4      _jn( 4, x )  0.063131
   Second 0      _y0( x )     0.511681
   Second 1      _y1( x )     0.094374
   Second 2      _yn( 2, x )  -0.432608
   Second 3      _yn( 3, x )  -0.819314
   Second 4      _yn( 4, x )  -1.626833

另请参阅

数学和浮点支持
_matherr