std::assoc_laguerre, std::assoc_laguerref, std::assoc_laguerrel
Определено в заголовочном файле <cmath> | ||
|---|---|---|
float assoc_laguerre ( unsigned int n, unsigned int m, float x ); double assoc_laguerre ( unsigned int n, unsigned int m, double x ); long double assoc_laguerre ( unsigned int n, unsigned int m, long double x ); | (1) |
(начиная с C++17) (до C++23) |
/* floating-point-type */ assoc_laguerre( unsigned int n, unsigned int m,
/* floating-point-type */ x );
| (начиная с C++23) | |
float assoc_laguerref( unsigned int n, unsigned int m, float x ); | (2) | (начиная с C++17) |
long double assoc_laguerrel( unsigned int n, unsigned int m, long double x ); | (3) | (начиная с C++17) |
| Дополнительные перегрузки | ||
Определено в заголовочном файле <cmath> | ||
template< class Integer > double assoc_laguerre ( unsigned int n, unsigned int m, Integer x ); | (A) | (начиная с C++17) |
n, порядка m и с аргументом x. Библиотека предоставляет перегрузки std::assoc_laguerre для всех типов с плавающей точкой без cv-квалификаторов в качестве типа параметра x.(начиная с C++23)
Параметры
| n | - | степень многочлена, значение беззнакового целого типа |
| m | - | порядок многочлена, значение беззнакового целого типа |
| x | - | аргумент, значение типа с плавающей точкой или целочисленного типа |
Возвращаемое значение
Если ошибок не возникает, возвращается значение присоединённого многочлена Лагерра для x, то есть \((-1)^m \: \frac{ \mathsf{d} ^ m}{ \mathsf{d}x ^ m} \, \mathsf{L}_{n+m}(x)\)(-1)
(где \(\mathsf{L}_{n+m}(x)\)Ln+m(x) — неприсоединённый многочлен Лагерра, std::laguerre(n + m, x)).
Обработка ошибок
Об ошибках может сообщаться в соответствии с math_errhandling
- Если аргумент равен NaN, возвращается NaN, и ошибка области определения не сообщается
- Если
xотрицательно, может возникнуть ошибка области определения - Если
nилиmбольше или равно 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.
Присоединённые многочлены Лагерра являются полиномиальными решениями уравнения \(x\ddot{y} + (m+1-x)\dot{y} + ny = 0\)xy,,+(m+1-x)y,+ny = 0.
Первые несколько многочленов:
| Функция | Многочлен |
|---|---|
| assoc_laguerre(0,m,x) | 1 |
| assoc_laguerre(1,m,x) | -x + m + 1 |
| assoc_laguerre(2,m,x) | 1/2[x2 - 2(m + 2)x + (m + 1)(m + 2)] |
| assoc_laguerre(3,m,x) | 1/6[-x3 - 3(m + 3)x2 - 3(m + 2)(m + 3)x + (m + 1)(m + 2)(m + 3)] |
Дополнительные перегрузки не обязаны предоставляться в точности в виде (A). Они должны лишь обеспечивать, чтобы для их аргумента num целочисленного типа std::assoc_laguerre(int_num1, int_num2, num) имело тот же эффект, что и std::assoc_laguerre(int_num1, int_num2, static_cast<double>(num)).
Пример
#include <cmath>
#include <iostream>
double L1(unsigned m, double x)
{
return -x + m + 1;
}
double L2(unsigned m, double x)
{
return 0.5 * (x * x - 2 * (m + 2) * x + (m + 1) * (m + 2));
}
int main()
{
// spot-checks
std::cout << std::assoc_laguerre(1, 10, 0.5) << '=' << L1(10, 0.5) << '\n'
<< std::assoc_laguerre(2, 10, 0.5) << '=' << L2(10, 0.5) << '\n';
}
Вывод:
10.5=10.5 60.125=60.125
См. также
|
(C++17)(C++17)(C++17) | Многочлены Лагерра (функция) |
Внешние ссылки
| Weisstein, Eric W. «Присоединённый многочлен Лагерра». Из MathWorld — веб-ресурса Wolfram. |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/special_functions/assoc_laguerre