kopia lustrzana https://github.com/Dsplib/libdspl-2.0
468 wiersze
17 KiB
Plaintext
468 wiersze
17 KiB
Plaintext
|
||
|
||
/*! ****************************************************************************
|
||
\ingroup SPEC_MATH_ELLIP_GROUP
|
||
\fn int ellip_acd(double* w, int n, double k, double* u)
|
||
\brief Обратная эллиптическая функция Якоби
|
||
\f$ u = \textrm{cd}^{-1}(w, k)\f$ вещественного аргумента
|
||
|
||
Функция рассчитывает занчения значения обратной эллиптической функции
|
||
\f$ u = \textrm{cd}^{-1}(w, k)\f$ для вещественного вектора `w`.<BR>
|
||
|
||
Для расчета используется итерационный алгоритм на основе преобразования
|
||
Ландена.<BR>
|
||
|
||
|
||
\param[in] w Указатель на массив вектора переменной \f$ w \f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
\param[in] n Размер вектора `w`. <BR><BR>
|
||
|
||
\param[in] k Значение эллиптического модуля \f$ k \f$.<BR>
|
||
Эллиптический модуль -- вещественный параметр,
|
||
принимающий значения от 0 до 1. <BR><BR>
|
||
|
||
|
||
\param[out] u Указатель на вектор значений обратной эллиптической
|
||
функции \f$ u = \textrm{cd}^{-1}(w, k)\f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
|
||
\return
|
||
`RES_OK` Расчет произведен успешно.<BR>
|
||
В противном случае
|
||
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
||
|
||
\author
|
||
Бахурин Сергей
|
||
www.dsplib.org
|
||
|
||
***************************************************************************** */
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*! ****************************************************************************
|
||
\ingroup SPEC_MATH_ELLIP_GROUP
|
||
\fn int ellip_acd_cmplx(complex_t* w, int n, double k, complex_t* u)
|
||
\brief Обратная эллиптическая функция Якоби
|
||
\f$ u = \textrm{cd}^{-1}(w, k)\f$ комплексного аргумента
|
||
|
||
Функция рассчитывает занчения значения обратной эллиптической функции
|
||
\f$ u = \textrm{cd}^{-1}(w, k)\f$ для комплексного вектора `w`.<BR>
|
||
|
||
Для расчета используется итерационный алгоритм на основе преобразования
|
||
Ландена.<BR>
|
||
|
||
|
||
\param[in] w Указатель на массив вектора переменной \f$ w \f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
\param[in] n Размер вектора `w`. <BR><BR>
|
||
|
||
\param[in] k Значение эллиптического модуля \f$ k \f$.<BR>
|
||
Эллиптический модуль -- вещественный параметр,
|
||
принимающий значения от 0 до 1. <BR><BR>
|
||
|
||
|
||
\param[out] u Указатель на вектор значений обратной эллиптической
|
||
функции \f$ u = \textrm{cd}^{-1}(w, k)\f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
|
||
\return
|
||
`RES_OK` Расчет произведен успешно.<BR>
|
||
В противном случае
|
||
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
||
|
||
\author
|
||
Бахурин Сергей
|
||
www.dsplib.org
|
||
|
||
***************************************************************************** */
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*! ****************************************************************************
|
||
\ingroup SPEC_MATH_ELLIP_GROUP
|
||
\fn int ellip_asn(double* w, int n, double k, double* u)
|
||
\brief Обратная эллиптическая функция Якоби
|
||
\f$ u = \textrm{sn}^{-1}(w, k)\f$ вещественного аргумента
|
||
|
||
Функция рассчитывает занчения значения обратной эллиптической функции
|
||
\f$ u = \textrm{sn}^{-1}(w, k)\f$ для вещественного вектора `w`.<BR>
|
||
|
||
Для расчета используется итерационный алгоритм на основе преобразования
|
||
Ландена.<BR>
|
||
|
||
|
||
\param[in] w Указатель на массив вектора переменной \f$ w \f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
\param[in] n Размер вектора `w`. <BR><BR>
|
||
|
||
\param[in] k Значение эллиптического модуля \f$ k \f$.<BR>
|
||
Эллиптический модуль -- вещественный параметр,
|
||
принимающий значения от 0 до 1. <BR><BR>
|
||
|
||
|
||
\param[out] u Указатель на вектор значений обратной эллиптической
|
||
функции \f$ u = \textrm{sn}^{-1}(w, k)\f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
|
||
\return
|
||
`RES_OK` Расчет произведен успешно.<BR>
|
||
В противном случае
|
||
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
||
|
||
\author
|
||
Бахурин Сергей
|
||
www.dsplib.org
|
||
|
||
***************************************************************************** */
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*! ****************************************************************************
|
||
\ingroup SPEC_MATH_ELLIP_GROUP
|
||
\fn int ellip_asn_cmplx(complex_t* w, int n, double k, complex_t* u)
|
||
\brief Обратная эллиптическая функция Якоби
|
||
\f$ u = \textrm{sn}^{-1}(w, k)\f$ комплексного аргумента
|
||
|
||
Функция рассчитывает занчения значения обратной эллиптической функции
|
||
\f$ u = \textrm{sn}^{-1}(w, k)\f$ для комплексного вектора `w`.<BR>
|
||
|
||
Для расчета используется итерационный алгоритм на основе преобразования
|
||
Ландена.<BR>
|
||
|
||
|
||
\param[in] w Указатель на массив вектора переменной \f$ w \f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
\param[in] n Размер вектора `w`. <BR><BR>
|
||
|
||
\param[in] k Значение эллиптического модуля \f$ k \f$.<BR>
|
||
Эллиптический модуль -- вещественный параметр,
|
||
принимающий значения от 0 до 1. <BR><BR>
|
||
|
||
|
||
\param[out] u Указатель на вектор значений обратной эллиптической
|
||
функции \f$ u = \textrm{sn}^{-1}(w, k)\f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
|
||
\return
|
||
`RES_OK` Расчет произведен успешно.<BR>
|
||
В противном случае
|
||
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
||
|
||
\author
|
||
Бахурин Сергей
|
||
www.dsplib.org
|
||
|
||
***************************************************************************** */
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*! ****************************************************************************
|
||
\ingroup SPEC_MATH_ELLIP_GROUP
|
||
\fn int ellip_cd(double* u, int n, double k, double* y)
|
||
\brief Эллиптическая функция Якоби
|
||
\f$ y = \textrm{cd}(u K(k), k)\f$ вещественного аргумента
|
||
|
||
Функция рассчитывает занчения значения эллиптической функции
|
||
\f$ y = \textrm{cd}(u K(k), k)\f$ для вещественного вектора `u` и
|
||
эллиптического модуля `k`.<BR>
|
||
|
||
Для расчета используется итерационный алгоритм на основе преобразования
|
||
Ландена.<BR>
|
||
|
||
|
||
\param[in] u Указатель на массив вектора переменной \f$ u \f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
\param[in] n Размер вектора `u`. <BR><BR>
|
||
|
||
\param[in] k Значение эллиптического модуля \f$ k \f$.<BR>
|
||
Эллиптический модуль -- вещественный параметр,
|
||
принимающий значения от 0 до 1. <BR><BR>
|
||
|
||
|
||
\param[out] y Указатель на вектор значений эллиптической
|
||
функции \f$ y = \textrm{cd}(u K(k), k)\f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
|
||
\return
|
||
`RES_OK` Расчет произведен успешно.<BR>
|
||
В противном случае
|
||
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
||
|
||
\author
|
||
Бахурин Сергей
|
||
www.dsplib.org
|
||
|
||
***************************************************************************** */
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*! ****************************************************************************
|
||
\ingroup SPEC_MATH_ELLIP_GROUP
|
||
\fn int ellip_cd_cmplx(complex_t* u, int n, double k, complex_t* y)
|
||
\brief Эллиптическая функция Якоби
|
||
\f$ y = \textrm{cd}(u K(k), k)\f$ комплексного аргумента
|
||
|
||
Функция рассчитывает занчения значения эллиптической функции
|
||
\f$ y = \textrm{cd}(u K(k), k)\f$ для комплексного вектора `u` и
|
||
эллиптического модуля `k`.<BR>
|
||
|
||
Для расчета используется итерационный алгоритм на основе преобразования
|
||
Ландена.<BR>
|
||
|
||
|
||
\param[in] u Указатель на массив вектора переменной \f$ u \f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
\param[in] n Размер вектора `u`. <BR><BR>
|
||
|
||
\param[in] k Значение эллиптического модуля \f$ k \f$.<BR>
|
||
Эллиптический модуль -- вещественный параметр,
|
||
принимающий значения от 0 до 1. <BR><BR>
|
||
|
||
|
||
\param[out] y Указатель на вектор значений эллиптической
|
||
функции \f$ y = \textrm{cd}(u K(k), k)\f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
|
||
\return
|
||
`RES_OK` Расчет произведен успешно.<BR>
|
||
В противном случае
|
||
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
||
|
||
\author
|
||
Бахурин Сергей
|
||
www.dsplib.org
|
||
|
||
***************************************************************************** */
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*! ****************************************************************************
|
||
\ingroup SPEC_MATH_ELLIP_GROUP
|
||
\fn int ellip_landen(double k, int n, double* y)
|
||
\brief Расчет коэффициентов \f$ k_i \f$ ряда полного эллиптического интеграла.
|
||
|
||
|
||
Полный эллиптический интеграл \f$ K(k) \f$ может быть представлен рядом:
|
||
|
||
\f[
|
||
K(k) = \frac{\pi}{2} \prod_{i = 1}^{\infty}(1+k_i),
|
||
\f]
|
||
|
||
где \f$ k_i \f$ вычисляется итерационно при начальных условиях \f$ k_0 = k\f$:
|
||
|
||
\f[
|
||
k_i =
|
||
\left(
|
||
\frac{k_{i-1}}
|
||
{
|
||
1+\sqrt{1-k_{i-1}^2}
|
||
}
|
||
\right)^2
|
||
\f]
|
||
|
||
Данная функция рассчитывает ряд первых `n` значений \f$ k_i \f$, которые в
|
||
дальнейшем могут быть использованы для расчета эллиптического интеграла и
|
||
эллиптических функций.
|
||
|
||
|
||
\param[in] k Эллиптический модуль \f$ k \f$.<BR>
|
||
|
||
|
||
\param[in] n Размер вектора `y` соответсвующих
|
||
коэффициентам \f$ k_i \f$. <BR><BR>
|
||
|
||
|
||
|
||
\param[out] y Указатель на вектор значений
|
||
коэффициентов \f$ k_i \f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
|
||
\return
|
||
`RES_OK` Расчет произведен успешно.<BR>
|
||
В противном случае
|
||
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
||
|
||
Пример использования функции `ellip_landen`:
|
||
|
||
\include ellip_landen_test.c
|
||
|
||
Результат работы программы:
|
||
|
||
\verbatim
|
||
i k[i]
|
||
|
||
1 4.625e-01
|
||
2 6.009e-02
|
||
3 9.042e-04
|
||
4 2.044e-07
|
||
5 1.044e-14
|
||
6 2.727e-29
|
||
7 1.859e-58
|
||
8 8.640e-117
|
||
9 1.866e-233
|
||
10 0.000e+00
|
||
11 0.000e+00
|
||
12 0.000e+00
|
||
13 0.000e+00
|
||
\endverbatim
|
||
|
||
\note Ряд полного эллиптического интеграла сходится при значениях
|
||
эллиптического модуля \f$ k<1 \f$. При этом сходимость ряда достаточно
|
||
быстрая и для практический приложений достаточно от 10 до 20 значений
|
||
\f$ k_i \f$ для обеспечения погрешности при расчете полного
|
||
эллиптического интеграла в пределах машинной точности.
|
||
|
||
\author
|
||
Бахурин Сергей
|
||
www.dsplib.org
|
||
|
||
***************************************************************************** */
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*! ****************************************************************************
|
||
\ingroup SPEC_MATH_ELLIP_GROUP
|
||
\fn int ellip_sn(double* u, int n, double k, double* y)
|
||
\brief Эллиптическая функция Якоби
|
||
\f$ y = \textrm{sn}(u K(k), k)\f$ вещественного аргумента
|
||
|
||
Функция рассчитывает занчения значения эллиптической функции
|
||
\f$ y = \textrm{sn}(u K(k), k)\f$ для вещественного вектора `u` и
|
||
эллиптического модуля `k`.<BR>
|
||
|
||
Для расчета используется итерационный алгоритм на основе преобразования
|
||
Ландена.<BR>
|
||
|
||
|
||
\param[in] u Указатель на массив вектора переменной \f$ u \f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
\param[in] n Размер вектора `u`. <BR><BR>
|
||
|
||
\param[in] k Значение эллиптического модуля \f$ k \f$.<BR>
|
||
Эллиптический модуль -- вещественный параметр,
|
||
принимающий значения от 0 до 1. <BR><BR>
|
||
|
||
|
||
\param[out] y Указатель на вектор значений эллиптической
|
||
функции \f$ y = \textrm{sn}(u K(k), k)\f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
|
||
\return
|
||
`RES_OK` Расчет произведен успешно.<BR>
|
||
В противном случае
|
||
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
||
|
||
\author
|
||
Бахурин Сергей
|
||
www.dsplib.org
|
||
|
||
***************************************************************************** */
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*! ****************************************************************************
|
||
\ingroup SPEC_MATH_ELLIP_GROUP
|
||
\fn int ellip_sn_cmplx(complex_t* u, int n, double k, complex_t* y)
|
||
\brief Эллиптическая функция Якоби
|
||
\f$ y = \textrm{sn}(u K(k), k)\f$ комплексного аргумента
|
||
|
||
Функция рассчитывает занчения значения эллиптической функции
|
||
\f$ y = \textrm{sn}(u K(k), k)\f$ для комплексного вектора `u` и
|
||
эллиптического модуля `k`.<BR>
|
||
|
||
Для расчета используется итерационный алгоритм на основе преобразования
|
||
Ландена.<BR>
|
||
|
||
|
||
\param[in] u Указатель на массив вектора переменной \f$ u \f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
\param[in] n Размер вектора `u`. <BR><BR>
|
||
|
||
\param[in] k Значение эллиптического модуля \f$ k \f$.<BR>
|
||
Эллиптический модуль -- вещественный параметр,
|
||
принимающий значения от 0 до 1. <BR><BR>
|
||
|
||
|
||
\param[out] y Указатель на вектор значений эллиптической
|
||
функции \f$ y = \textrm{sn}(u K(k), k)\f$.<BR>
|
||
Размер вектора `[n x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
|
||
\return
|
||
`RES_OK` Расчет произведен успешно.<BR>
|
||
В противном случае
|
||
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
||
|
||
\author
|
||
Бахурин Сергей
|
||
www.dsplib.org
|
||
|
||
***************************************************************************** */
|
||
|
||
|
||
|
||
|