std::laguerre, std::laguerref, std::laguerrel
Определено в заголовочном файле <cmath> | ||
|---|---|---|
float laguerre ( unsigned int n, float x ); double laguerre ( unsigned int n, double x ); long double laguerre ( unsigned int n, long double x ); | (1) |
(начиная с 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)
Параметры
| n | - | степень полинома, значение беззнакового целочисленного типа |
| x | - | аргумент, значение типа с плавающей точкой или целочисленного типа |
Возвращаемое значение
Если ошибок не возникает, возвращается значение несопряжённого полинома Лагерра от 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) | сопряжённые полиномы Лагерра (функция) |
Внешние ссылки
| Вайсстайн, Эрик У. «Полином Лагерра». Из MathWorld — веб-ресурса Wolfram. |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/special_functions/laguerre