Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::sph_legendre,std::sph_legendref,std::sph_legendrel

      From cppreference.com
      <cpp‎ |numeric‎ |special functions
       
       
       
       
      Defined in header<cmath>
      (1)
      float       sph_legendre(unsigned l,unsigned m,float theta);

      double      sph_legendre(unsigned l,unsigned m,double theta);

      longdouble sph_legendre(unsigned l,unsigned m,longdouble theta);
      (since C++17)
      (until C++23)
      /* floating-point-type */ sph_legendre(unsigned l,unsigned m,
                                             /* floating-point-type */ theta);
      (since C++23)
      float       sph_legendref(unsigned l,unsigned m,float theta);
      (2)(since C++17)
      longdouble sph_legendrel(unsigned l,unsigned m,longdouble theta);
      (3)(since C++17)
      Defined in header<cmath>
      template<class Integer>
      double      sph_legendre(unsigned l,unsigned m, Integer theta);
      (A)(since C++17)
      1-3) Computes thespherical associated Legendre function of degreel, orderm, and polar angletheta. The library provides overloads ofstd::sph_legendre for all cv-unqualified floating-point types as the type of the parametertheta.(since C++23)
      A) Additional overloads are provided for all integer types, which are treated asdouble.

      Contents

      [edit]Parameters

      l - degree
      m - order
      theta - polar angle, measured in radians

      [edit]Return value

      If no errors occur, returns the value of the spherical associated Legendre function (that is, spherical harmonic with ϕ = 0) ofl,m, andtheta, where the spherical harmonic function is defined asYm
      l
      (theta,ϕ) = (-1)m
      [
      (2l+1)(l-m)!
      4π(l+m)!
      ]1/2
      Pm
      l
      (cos(theta))eimϕ
      wherePm
      l
      (x)
      isstd::assoc_legendre(l, m, x)) and|m|≤l.

      Note that theCondon-Shortley phase term(-1)m
      is included in this definition because it is omitted from the definition ofPm
      l
      instd::assoc_legendre.

      [edit]Error handling

      Errors may be reported as specified inmath_errhandling.

      • If the argument is NaN, NaN is returned and domain error is not reported.
      • Ifl≥128, the behavior is implementation-defined.

      [edit]Notes

      Implementations that do not support C++17, but supportISO 29124:2010, provide this function if__STDCPP_MATH_SPEC_FUNCS__ is defined by the implementation to a value at least 201003L and if the user defines__STDCPP_WANT_MATH_SPEC_FUNCS__ before including any standard library headers.

      Implementations that do not support ISO 29124:2010 but support TR 19768:2007 (TR1), provide this function in the headertr1/cmath and namespacestd::tr1.

      An implementation of the spherical harmonic function is available inboost.math, and it reduces to this function when called with the parameter phi set to zero.

      The additional overloads are not required to be provided exactly as(A). They only need to be sufficient to ensure that for their argumentnum of integer type,std::sph_legendre(int_num1, int_num2, num) has the same effect asstd::sph_legendre(int_num1, int_num2,static_cast<double>(num)).

      [edit]Example

      Run this code
      #include <cmath>#include <iostream>#include <numbers> int main(){// spot check for l=3, m=0double x=1.2345;std::cout<<"Y_3^0("<< x<<") = "<< std::sph_legendre(3,0, x)<<'\n'; // exact solutionstd::cout<<"exact solution = "<<0.25*std::sqrt(7/std::numbers::pi)*(5*std::pow(std::cos(x),3)-3*std::cos(x))<<'\n';}

      Output:

      Y_3^0(1.2345) = -0.302387exact solution = -0.302387

      [edit]See also

      associated Legendre polynomials
      (function)[edit]

      [edit]External links

      Weisstein, Eric W. "Spherical Harmonic." From MathWorld — A Wolfram Web Resource.
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/numeric/special_functions/sph_legendre&oldid=149663"

      [8]ページ先頭

      ©2009-2025 Movatter.jp