Namespaces
Variants

std:: cyl_neumann, std:: cyl_neumannf, std:: cyl_neumannl

From cppreference.net
헤더에 정의됨 <cmath>
(1)
float cyl_neumann ( float nu, float x ) ;

double cyl_neumann ( double nu, double x ) ;

long double cyl_neumann ( long double nu, long double x ) ;
(C++17부터)
(C++23까지)
/* floating-point-type */ cyl_neumann ( /* floating-point-type */ nu,
/* floating-point-type */ x ) ;
(C++23부터)
float cyl_neumannf ( float nu, float x ) ;
(2) (C++17부터)
long double cyl_neumannl ( long double nu, long double x ) ;
(3) (C++17부터)
헤더에 정의됨 <cmath>
template < class Arithmetic1, class Arithmetic2 >

/* common-floating-point-type */

cyl_neumann ( Arithmetic1 nu, Arithmetic2 x ) ;
(A) (C++17부터)
1-3) nu x 원통형 노이만 함수 (제2종 베셀 함수 또는 베버 함수로도 알려짐)를 계산합니다. 라이브러리는 모든 cv-비한정 부동소수점 타입에 대해 매개변수 nu x 의 타입으로 std::cyl_neumann 의 오버로드를 제공합니다. (C++23 이후)
A) 추가적인 오버로드들이 다른 모든 산술 타입 조합에 대해 제공됩니다.

목차

매개변수

nu - 함수의 차수
x - 함수의 인수

반환값

If no errors occur, value of the cylindrical Neumann function (Bessel function of the second kind) of nu and x , is returned, that is N nu (x) =
J nu (x)cos(nuπ)-J -nu (x)
sin(nuπ)
(where J nu (x) is std:: cyl_bessel_j ( nu, x ) ) for x≥0 and non-integer nu ; for integer nu a limit is used.

오류 처리

오류는 다음과 같이 보고될 수 있습니다: math_errhandling :

  • 인수가 NaN이면, NaN이 반환되고 도메인 오류는 보고되지 않습니다.
  • 만약 nu≥128 이면, 동작은 구현에 따라 정의됩니다.

참고 사항

C++17을 지원하지 않지만 ISO 29124:2010 을 지원하는 구현체는, __STDCPP_MATH_SPEC_FUNCS__ 가 구현체에 의해 최소 201003L 값으로 정의되고 사용자가 표준 라이브러리 헤더를 포함하기 전에 __STDCPP_WANT_MATH_SPEC_FUNCS__ 를 정의하는 경우 이 함수를 제공합니다.

ISO 29124:2010을 지원하지 않지만 TR 19768:2007(TR1)을 지원하는 구현에서는 이 함수를 tr1/cmath 헤더와 std::tr1 네임스페이스에서 제공합니다.

이 함수의 구현은 boost.math 에서도 이용 가능합니다.

추가 오버로드는 반드시 (A) 와 정확히 동일하게 제공될 필요가 없습니다. 첫 번째 인수 num1 과 두 번째 인수 num2 에 대해 다음을 보장할 수 있을 만큼 충분하기만 하면 됩니다:

  • num1 또는 num2 long double 타입을 가지는 경우, std :: cyl_neumann ( num1, num2 ) std :: cyl_neumann ( static_cast < long double > ( num1 ) ,
    static_cast < long double > ( num2 ) )
    와 동일한 효과를 가집니다.
  • 그렇지 않고 num1 및/또는 num2 double 또는 정수 타입을 가지는 경우, std :: cyl_neumann ( num1, num2 ) std :: cyl_neumann ( static_cast < double > ( num1 ) ,
    static_cast < double > ( num2 ) )
    와 동일한 효과를 가집니다.
  • 그렇지 않고 num1 또는 num2 float 타입을 가지는 경우, std :: cyl_neumann ( num1, num2 ) std :: cyl_neumann ( static_cast < float > ( num1 ) ,
    static_cast < float > ( num2 ) )
    와 동일한 효과를 가집니다.
(C++23 이전)

num1 num2 가 산술 타입을 가지는 경우, std :: cyl_neumann ( num1, num2 ) std :: cyl_neumann ( static_cast < /* common-floating-point-type */ > ( num1 ) ,
static_cast < /* common-floating-point-type */ > ( num2 ) )
와 동일한 효과를 가집니다. 여기서 /* common-floating-point-type */ num1 num2 의 타입들 사이에서 가장 높은 부동소수점 변환 순위 와 가장 높은 부동소수점 변환 하위 순위 를 가지는 부동소수점 타입이며, 정수 타입 인수는 double 과 동일한 부동소수점 변환 순위를 가진 것으로 간주됩니다.

가장 높은 순위와 하위 순위를 가지는 부동소수점 타입이 존재하지 않는 경우, 오버로드 해결 은 제공된 오버로드들 중에서 사용 가능한 후보를 결과로 내지 않습니다.

(C++23 이후)

예제

#include <cassert>
#include <cmath>
#include <iostream>
#include <numbers>
const double π = std::numbers::pi; // 또는 C++20 이전 버전에서는 std::acos(-1)
// 원통형 Neumann 함수를 제1종 원통형 Bessel 함수를 통해 계산하려면
// J를 구현해야 합니다. 왜냐하면 위 공식에 따라 std::cyl_bessel_j(nu, x)를
// 직접 호출할 경우, 음수 nu에 대해 'std::domain_error': Bad argument in __cyl_bessel_j 오류가 발생하기 때문입니다.
double J_neg(double nu, double x)
{
    return std::cos(-nu * π) * std::cyl_bessel_j(-nu, x)
          -std::sin(-nu * π) * std::cyl_neumann(-nu, x);
}
double J_pos(double nu, double x)
{
    return std::cyl_bessel_j(nu, x);
}
double J(double nu, double x)
{
    return nu < 0.0 ? J_neg(nu, x) : J_pos(nu, x);
}
int main()
{
    std::cout << "nu == 0.5에 대한 점검\n" << std::fixed << std::showpos;
    const double nu = 0.5;
    for (double x = 0.0; x <= 2.0; x += 0.333)
    {
        const double n = std::cyl_neumann(nu, x);
        const double j = (J(nu, x) * std::cos(nu * π) - J(-nu, x)) / std::sin(nu * π);
        std::cout << "N_.5(" << x << ") = " << n << ", J를 통해 계산 = " << j << '\n';
        assert(n == j);
    }
}

출력:

nu == 0.5에 대한 점검
N_.5(+0.000000) = -inf, J를 통해 계산 = -inf
N_.5(+0.333000) = -1.306713, J를 통해 계산 = -1.306713
N_.5(+0.666000) = -0.768760, J를 통해 계산 = -0.768760
N_.5(+0.999000) = -0.431986, J를 통해 계산 = -0.431986
N_.5(+1.332000) = -0.163524, J를 통해 계산 = -0.163524
N_.5(+1.665000) = +0.058165, J를 통해 계산 = +0.058165
N_.5(+1.998000) = +0.233876, J를 통해 계산 = +0.233876

참고 항목

정규 수정 원통 베셀 함수
(함수)
제1종 원통 베셀 함수
(함수)
비정규 수정 원통 베셀 함수
(함수)

외부 링크

Weisstein, Eric W. "Bessel Function of the Second Kind." MathWorld — Wolfram 웹 리소스에서.