libdspl-2.0
Библиотека алгоритмов цифровой обработки сигналов
Эллиптические функции Якоби

Эллиптические функции Якоби вещественного и комплексного аргумента Подробнее...

Функции

int ellip_acd (double *w, int n, double k, double *u)
 Обратная эллиптическая функция Якоби \( u = \textrm{cd}^{-1}(w, k)\) вещественного аргумента Подробнее...
 
int ellip_acd_cmplx (complex_t *w, int n, double k, complex_t *u)
 Обратная эллиптическая функция Якоби \( u = \textrm{cd}^{-1}(w, k)\) комплексного аргумента Подробнее...
 
int ellip_asn (double *w, int n, double k, double *u)
 Обратная эллиптическая функция Якоби \( u = \textrm{sn}^{-1}(w, k)\) вещественного аргумента Подробнее...
 
int ellip_asn_cmplx (complex_t *w, int n, double k, complex_t *u)
 Обратная эллиптическая функция Якоби \( u = \textrm{sn}^{-1}(w, k)\) комплексного аргумента Подробнее...
 
int ellip_cd (double *u, int n, double k, double *y)
 Эллиптическая функция Якоби \( y = \textrm{cd}(u K(k), k)\) вещественного аргумента Подробнее...
 
int ellip_cd_cmplx (complex_t *u, int n, double k, complex_t *y)
 Эллиптическая функция Якоби \( y = \textrm{cd}(u K(k), k)\) комплексного аргумента Подробнее...
 
int ellip_landen (double k, int n, double *y)
 Расчет коэффициентов \( k_i \) ряда полного эллиптического интеграла.
Подробнее...
 
int ellip_sn (double *u, int n, double k, double *y)
 Эллиптическая функция Якоби \( y = \textrm{sn}(u K(k), k)\) вещественного аргумента Подробнее...
 
int ellip_sn_cmplx (complex_t *u, int n, double k, complex_t *y)
 Эллиптическая функция Якоби \( y = \textrm{sn}(u K(k), k)\) комплексного аргумента Подробнее...
 

Подробное описание

Эллиптические функции Якоби вещественного и комплексного аргумента

Функции

◆ ellip_acd()

int ellip_acd ( double *  w,
int  n,
double  k,
double *  u 
)

Обратная эллиптическая функция Якоби \( u = \textrm{cd}^{-1}(w, k)\) вещественного аргумента



Функция рассчитывает значения обратной эллиптической функции \( u = \textrm{cd}^{-1}(w, k)\) для вещественного вектора w.
Для расчета используется итерационный алгоритм на основе преобразования Ландена.

Аргументы
[in]wУказатель на массив вектора переменной \( w \).
Размер вектора [n x 1].
Память должна быть выделена.

[in]nРазмер вектора w.
[in]kЗначение эллиптического модуля \( k \). Эллиптический модуль – вещественный параметр, принимающий значения от 0 до 1.

[out]uУказатель на вектор значений обратной эллиптической функции \( u = \textrm{cd}^{-1}(w, k)\).
Размер вектора [n x 1].
Память должна быть выделена.

Возвращает
RES_OK Расчет произведен успешно.
В противном случае код ошибки.
Автор
Бахурин Сергей www.dsplib.org

См. определение в файле ellipj.c строка 103

◆ ellip_acd_cmplx()

int ellip_acd_cmplx ( complex_t w,
int  n,
double  k,
complex_t u 
)

Обратная эллиптическая функция Якоби \( u = \textrm{cd}^{-1}(w, k)\) комплексного аргумента



Функция рассчитывает значения значения обратной эллиптической функции \( u = \textrm{cd}^{-1}(w, k)\) для комплексного вектора w.
Для расчета используется итерационный алгоритм на основе преобразования Ландена.

Аргументы
[in]wУказатель на массив вектора переменной \( w \).
Размер вектора [n x 1].
Память должна быть выделена.

[in]nРазмер вектора w.

[in]kЗначение эллиптического модуля \( k \).
Эллиптический модуль – вещественный параметр, принимающий значения от 0 до 1.

[out]uУказатель на вектор значений обратной эллиптической функции \( u = \textrm{cd}^{-1}(w, k)\).
Размер вектора [n x 1].
Память должна быть выделена.

Возвращает
RES_OK Расчет произведен успешно.
В противном случае код ошибки.
Автор
Бахурин Сергей www.dsplib.org

См. определение в файле ellipj.c строка 211

◆ ellip_asn()

int ellip_asn ( double *  w,
int  n,
double  k,
double *  u 
)

Обратная эллиптическая функция Якоби \( u = \textrm{sn}^{-1}(w, k)\) вещественного аргумента



Функция рассчитывает значения значения обратной эллиптической функции \( u = \textrm{sn}^{-1}(w, k)\) для вещественного вектора w.
Для расчета используется итерационный алгоритм на основе преобразования Ландена.

Аргументы
[in]wУказатель на массив вектора переменной \( w \).
Размер вектора [n x 1].
Память должна быть выделена.

[in]nРазмер вектора w.

[in]kЗначение эллиптического модуля \( k \).
Эллиптический модуль – вещественный параметр, принимающий значения от 0 до 1.

[out]uУказатель на вектор значений обратной эллиптической функции \( u = \textrm{sn}^{-1}(w, k)\).
Размер вектора [n x 1].
Память должна быть выделена.

Возвращает
RES_OK Расчет произведен успешно.
В противном случае код ошибки.
Автор
Бахурин Сергей www.dsplib.org

См. определение в файле ellipj.c строка 339

◆ ellip_asn_cmplx()

int ellip_asn_cmplx ( complex_t w,
int  n,
double  k,
complex_t u 
)

Обратная эллиптическая функция Якоби \( u = \textrm{sn}^{-1}(w, k)\) комплексного аргумента



Функция рассчитывает значения значения обратной эллиптической функции \( u = \textrm{sn}^{-1}(w, k)\) для комплексного вектора w.
Для расчета используется итерационный алгоритм на основе преобразования Ландена.

Аргументы
[in]wУказатель на массив вектора переменной \( w \).
Размер вектора [n x 1].
Память должна быть выделена.

[in]nРазмер вектора w.

[in]kЗначение эллиптического модуля \( k \).
Эллиптический модуль – вещественный параметр, принимающий значения от 0 до 1.

[out]uУказатель на вектор значений обратной эллиптической функции \( u = \textrm{sn}^{-1}(w, k)\).
Размер вектора [n x 1].
Память должна быть выделена.

Возвращает
RES_OKРасчет произведен успешно.
В противном случае код ошибки.
Автор
Бахурин Сергей www.dsplib.org

См. определение в файле ellipj.c строка 447

Используется в ellip_ap_zp().

◆ ellip_cd()

int ellip_cd ( double *  u,
int  n,
double  k,
double *  y 
)

Эллиптическая функция Якоби \( y = \textrm{cd}(u K(k), k)\) вещественного аргумента



Функция рассчитывает значения значения эллиптической функции \( y = \textrm{cd}(u K(k), k)\) для вещественного вектора u и эллиптического модуля k.
Для расчета используется итерационный алгоритм на основе преобразования Ландена.

Аргументы
[in]uУказатель на массив вектора переменной \( u \).
Размер вектора [n x 1].
Память должна быть выделена.

[in]nРазмер вектора u.

[in]kЗначение эллиптического модуля \( k \).
Эллиптический модуль – вещественный параметр, принимающий значения от 0 до 1.

[out]yУказатель на вектор значений эллиптической функции \( y = \textrm{cd}(u K(k), k)\).
Размер вектора [n x 1].
Память должна быть выделена.

Возвращает
RES_OK Расчет произведен успешно.
В противном случае код ошибки.
Автор
Бахурин Сергей www.dsplib.org

См. определение в файле ellipj.c строка 577

Используется в ellip_ap_zp().

◆ ellip_cd_cmplx()

int ellip_cd_cmplx ( complex_t u,
int  n,
double  k,
complex_t y 
)

Эллиптическая функция Якоби \( y = \textrm{cd}(u K(k), k)\) комплексного аргумента


Функция рассчитывает значения значения эллиптической функции \( y = \textrm{cd}(u K(k), k)\) для комплексного вектора u и эллиптического модуля k.
Для расчета используется итерационный алгоритм на основе преобразования Ландена.

Аргументы
[in]uУказатель на массив вектора переменной \( u \).
Размер вектора [n x 1].
Память должна быть выделена.

[in]nРазмер вектора u.

[in]kЗначение эллиптического модуля \( k \).
Эллиптический модуль – вещественный параметр, принимающий значения от 0 до 1.

[out]yУказатель на вектор значений эллиптической функции \( y = \textrm{cd}(u K(k), k)\).
Размер вектора [n x 1].
Память должна быть выделена.

Возвращает
RES_OK Расчет произведен успешно.
В противном случае код ошибки.
Автор
Бахурин Сергей www.dsplib.org

См. определение в файле ellipj.c строка 684

Используется в ellip_ap_zp().

◆ ellip_landen()

int ellip_landen ( double  k,
int  n,
double *  y 
)

Расчет коэффициентов \( k_i \) ряда полного эллиптического интеграла.


Полный эллиптический интеграл \( K(k) \) может быть представлен рядом:

\[ K(k) = \frac{\pi}{2} \prod_{i = 1}^{\infty}(1+k_i), \]

где \( k_i \) вычисляется итерационно при начальных условиях \( k_0 = k\):

\[ k_i = \left( \frac{k_{i-1}}{1+\sqrt{1-k_{i-1}^2}}\right)^2 \]

Данная функция рассчитывает ряд первых n значений \( k_i \), которые в дальнейшем могут быть использованы для расчета эллиптического интеграла и эллиптических функций.

Аргументы
[in]kЭллиптический модуль \( k \).
[in]nРазмер вектора y соответствующих коэффициентам \( k_i \).

[out]yУказатель на вектор значений коэффициентов \( k_i \).
Размер вектора [n x 1].
Память должна быть выделена.

Возвращает
RES_OK Расчет произведен успешно.
В противном случае код ошибки.
Пример использования функции ellip_landen:
#include <stdio.h>
#include <stdlib.h>
#include "dspl.h"
#define N 14
int main()
{
void* handle; /* DSPL handle */
handle = dspl_load(); /* Load DSPL function */
double k[N];
int i, err;
err = ellip_landen(0.93, N, k);
if(err != RES_OK)
{
printf("Error code: %8x\n", err);
return err;
}
printf(" i%8sk[i]\n\n", "");
for(i = 1; i < N; i++)
printf("%2d %11.3e\n", i, k[i]);
dspl_free(handle); /* free dspl handle */
return 0;
}

Результат работы программы:

 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
Заметки
Ряд полного эллиптического интеграла сходится при значениях эллиптического модуля \( k<1 \). При этом сходимость ряда достаточно быстрая и для практический приложений достаточно от 10 до 20 значений \( k_i \) для обеспечения погрешности при расчете полного эллиптического интеграла в пределах машинной точности.
Автор
Бахурин Сергей www.dsplib.org

См. определение в файле ellipj.c строка 872

Используется в ellip_acd(), ellip_acd_cmplx(), ellip_asn(), ellip_asn_cmplx(), ellip_cd(), ellip_cd_cmplx(), ellip_sn() и ellip_sn_cmplx().

◆ ellip_sn()

int ellip_sn ( double *  u,
int  n,
double  k,
double *  y 
)

Эллиптическая функция Якоби \( y = \textrm{sn}(u K(k), k)\) вещественного аргумента



Функция рассчитывает значения значения эллиптической функции \( y = \textrm{sn}(u K(k), k)\) для вещественного вектора u и эллиптического модуля k.
Для расчета используется итерационный алгоритм на основе преобразования Ландена.

Аргументы
[in]uУказатель на массив вектора переменной \( u \).
Размер вектора [n x 1].
Память должна быть выделена.

[in]nРазмер вектора u.

[in]kЗначение эллиптического модуля \( k \).
Эллиптический модуль – вещественный параметр, принимающий значения от 0 до 1.

[out]yУказатель на вектор значений эллиптической функции \( y = \textrm{sn}(u K(k), k)\).
Размер вектора [n x 1].
Память должна быть выделена.

Возвращает
RES_OK Расчет произведен успешно.
В противном случае код ошибки.
Автор
Бахурин Сергей www.dsplib.org

См. определение в файле ellipj.c строка 1074

◆ ellip_sn_cmplx()

int ellip_sn_cmplx ( complex_t u,
int  n,
double  k,
complex_t y 
)

Эллиптическая функция Якоби \( y = \textrm{sn}(u K(k), k)\) комплексного аргумента


Функция рассчитывает значения значения эллиптической функции \( y = \textrm{sn}(u K(k), k)\) для комплексного вектора u и эллиптического модуля k.
Для расчета используется итерационный алгоритм на основе преобразования Ландена.

Аргументы
[in]uУказатель на массив вектора переменной \( u \).
Размер вектора [n x 1].
Память должна быть выделена.

[in]nРазмер вектора u.

[in]kЗначение эллиптического модуля \( k \).
Эллиптический модуль – вещественный параметр, принимающий значения от 0 до 1.

[out]yУказатель на вектор значений эллиптической функции \( y = \textrm{sn}(u K(k), k)\).
Размер вектора [n x 1].
Память должна быть выделена.

Возвращает
RES_OK Расчет произведен успешно.
В противном случае код ошибки.
Автор
Бахурин Сергей www.dsplib.org

См. определение в файле ellipj.c строка 1179

Используется в ellip_ap_zp().

#define RES_OK
Функция завершилась корректно. Ошибки отсутствуют.
Definition: dspl.h:497
int ellip_landen(double k, int n, double *y)
Расчет коэффициентов ряда полного эллиптического интеграла.
Definition: ellipj.c:872