Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::legendre,std::legendref,std::legendrel

      From cppreference.com
      <cpp‎ |numeric‎ |special functions
       
       
       
       
      Defined in header<cmath>
      (1)
      float       legendre(unsignedint n,float x);

      double      legendre(unsignedint n,double x);

      longdouble legendre(unsignedint n,longdouble x);
      (since C++17)
      (until C++23)
      /* floating-point-type */ legendre(unsignedint n,
                                         /* floating-point-type */ x);
      (since C++23)
      float       legendref(unsignedint n,float x);
      (2)(since C++17)
      longdouble legendrel(unsignedint n,longdouble x);
      (3)(since C++17)
      Defined in header<cmath>
      template<class Integer>
      double      legendre(unsignedint n, Integer x);
      (A)(since C++17)
      1-3) Computes the unassociatedLegendre polynomials of the degreen and argumentx. The library provides overloads ofstd::legendre for all cv-unqualified floating-point types as the type of the parameterx.(since C++23)
      A) Additional overloads are provided for all integer types, which are treated asdouble.

      Contents

      [edit]Parameters

      n - the degree of the polynomial
      x - the argument, a floating-point or integer value

      [edit]Return value

      If no errors occur, value of the order-n unassociated Legendre polynomial ofx, that is\(\mathsf{P}_n(x) = \frac{1}{2^n n!} \frac{\mathsf{d}^n}{\mathsf{d}x^n} (x^2-1)^n \)
      1
      2n
      n!
      dn
      dxn
      (x2
      -1)n
      , is returned.

      [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
      • The function is not required to be defined for|x|>1
      • Ifn is greater or equal than 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 this function is alsoavailable in boost.math.

      The first few Legendre polynomials are:

      Function Polynomial
          legendre(0, x)    1
      legendre(1, x)x
      legendre(2, x)
      1
      2
      (3x2
      - 1)
      legendre(3, x)
      1
      2
      (5x3
      - 3x)
      legendre(4, x)     
      1
      8
      (35x4
      - 30x2
      + 3)
          

      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::legendre(int_num, num) has the same effect asstd::legendre(int_num,static_cast<double>(num)).

      [edit]Example

      Run this code
      #include <cmath>#include <iostream> double P3(double x){return0.5*(5*std::pow(x,3)-3* x);} double P4(double x){return0.125*(35*std::pow(x,4)-30* x* x+3);} int main(){// spot-checksstd::cout<< std::legendre(3,0.25)<<'='<< P3(0.25)<<'\n'<< std::legendre(4,0.25)<<'='<< P4(0.25)<<'\n';}

      Output:

      -0.335938=-0.3359380.157715=0.157715

      [edit]See also

      (C++17)(C++17)(C++17)
      Laguerre polynomials
      (function)[edit]
      (C++17)(C++17)(C++17)
      Hermite polynomials
      (function)[edit]

      [edit]External links

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

      [8]ページ先頭

      ©2009-2025 Movatter.jp