std::laguerre, std::laguerref, std::laguerrel
Определено в заголовке <cmath> | ||
|---|---|---|
| (1) | ||
float laguerre ( unsigned int n, float x ); double laguerre ( unsigned int n, double x ); long double laguerre ( unsigned int n, long double x ); |
(с C++17) (до C++23) | |
/* floating-point-type */ laguerre( unsigned int n,
/* floating-point-type */ x );
| (с C++23) | |
float laguerref( unsigned int n, float x ); | (2) | (с C++17) |
long double laguerrel( unsigned int n, long double x ); | (3) | (с C++17) |
| Дополнительные перегрузки | ||
Определено в заголовке <cmath> | ||
template< class Integer > double laguerre ( unsigned int n, Integer x ); | (A) | (с C++17) |
n и аргумента x. Библиотека предоставляет перегрузки std::laguerre для всех типов чисел с плавающей точкой без квалификатора cv как типа параметра x.(с C++23)
double.Параметры
| n | - | степень полинома, целочисленное значение без знака |
| x | - | аргумент, значение с плавающей точкой или целое число |
Значение возврата
Если ошибок не произошло, возвращается значение неассоциированного полинома Лагуэрра степениx, то есть ex/n!dn/dxn(xne-x). Обработка ошибок
Об ошибках может быть сообщено, как указано в math_errhandling
- Если аргумент NaN, возвращается NaN, и ошибка области не сообщается
- Если
xотрицательно, может произойти ошибка области - Если
nбольше или равно 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.
Полиномы Лагуэрра являются полиномиальными решениями уравнения .
Несколько первых полиномов:
| Функция | Полином |
|---|---|
| laguerre(0, x) | 1 |
| laguerre(1, x) | -x + 1 |
| laguerre(2, x) | 1/2(x2 - 4x + 2) |
| laguerre(3, x) | 1/6(-x3 - 9x2 - 18x + 6) |
Дополнительные перегрузки не обязаны предоставляться точно как (A). Они должны быть достаточными, чтобы для аргумента num целочисленного типа std::laguerre(int_num, num) имело тот же эффект, что и std::laguerre(int_num, static_cast<double>(num)).
Пример
#include <cmath>
#include <iostream>
double L1(double x)
{
return -x + 1;
}
double L2(double x)
{
return 0.5 * (x * x - 4 * x + 2);
}
int main()
{
// spot-checks
std::cout << std::laguerre(1, 0.5) << '=' << L1(0.5) << '\n'
<< std::laguerre(2, 0.5) << '=' << L2(0.5) << '\n'
<< std::laguerre(3, 0.0) << '=' << 1.0 << '\n';
}Вывод:
0.5=0.5 0.125=0.125 1=1
См. также
|
(C++17)(C++17)(C++17) | ассоциированные полиномы Лагуэрра (функция) |
Внешние ссылки
| Weisstein, Eric W. "Laguerre Polynomial." Из MathWorld — Wolfram Web Resource. |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/special_functions/laguerre