Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Jacobi Elliptic SN, CN and DN

Boost , Math Toolkit 2.5.0 , Jacobi Elliptic Functions

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
Synopsis
#include <boost/math/special_functions/jacobi_elliptic.hpp>
namespace boost { namespace math {
 template <class T, class U, class V>
 calculated-result-type jacobi_elliptic(T k, U u, V* pcn, V* pdn);
 template <class T, class U, class V, class Policy>
 calculated-result-type jacobi_elliptic(T k, U u, V* pcn, V* pdn, const Policy&);
}} // namespaces
Description

Функцияjacobi_ellipticвычисляет три эллиптические функции Якоби.sn(u, k),cn(u, k)иdn(u, k). Возвращенное значениеsn(u, k), а при условии,*pcnустанавливается наcn(u, k)и*pdnустанавливается наdn(u, k).

Функции определяются следующим образом, учитывая:

Угол φ называетсяамплитудаи:

[Note] Note

& #966;называется амплитуда.

kназывается модуль.

[Caution] Caution

Как и другие эллиптические функции, функции Якоби выражаются различными способами. В частности, параметрk(модуль) также может быть выражен с использованием модульного угла α или параметрм. Они связаны между собой:

k = sinα

m = k2= sin2α

Таким образом, функцияsn(например) может быть выражена как:

sn(u, k)

sn(u \ & #945;)

n(u | m)

Для дальнейшего усложнения вопросов некоторые тексты ссылаются надополнение параметра m, или 1 - m, где:

1 - m = 1 - k2= cos2α

Эта реализация используетkповсюду и делает это первым аргументом для функций: это для выравнивания с эллиптическими интегралами, которые соответствуют требованиямТехнического отчета о расширениях библиотеки C++. Тем не менее, вы должны быть очень осторожны при использовании этих функций!

Окончательный аргументПолитикаявляется необязательным и может быть использован для контроля поведения функции: как она обрабатывает ошибки, какой уровень точности использовать и т. д. См. документациюдля более подробной информации.

Следующие графики иллюстрируют, как эти функции меняются какkизменения: для небольшихkэто синусоидальные волны, в то время какkимеет тенденцию к 1 они становятся гиперболическими функциями:

Accuracy

Эти функции вычисляются с использованием только базовых арифметических операций и тригомометрических функций, поэтому нет большого различия в точности по сравнению с различными платформами. Как правило, ошибки тривиально малы для небольших углов и, как это типично для циклических функций, растут по мере увеличения угла. Обратите внимание, что только результаты для самого широкого типа с плавающей запятой в системе приведены, поскольку более узкие типы имеютфактически нулевую ошибку. Все значения являются относительными погрешностями в единицах эпсилона.

Table 6.70. Error rates for jacobi_cn

Microsoft Visual C++ версия 12.0
Win32
двойная

GNU C++ версия 5.1.0
Linux
double

GNU C++ версия 5.1.0
Linux
длинный двойной

Солнечный компилятор версии 0x5130
Солнечный солярис

Якоби Эллиптик: Данные Mathworld

Макс = 45,8ε (Средний = 11,4ε)

Макс = 0ε (Mean = 0ε)

GSL 1.16:Макс = 17.3ε (Mean = 4.29ε)И другие сбои.)
Цефес:Макс = +INFε (Средний = +INFε)И другие неудачи.

Макс = 71.6ε (Средний = 19.3ε)

Макс = 71.6ε (Средний = 19.4ε)

Якоби Эллиптик: Случайные данные

Макс = 1,83ε (Средний = 0,455ε)

Макс = 0.816ε (Mean = 0,0563ε)
GSL 1.16:Макс = 2.43ε (Mean = 0.803ε)]
Цефес:Макс = 1,83ε (Mean = 0.437ε)]

Макс = 1,68ε (Средний = 0,443ε)

Макс = 1,68ε (Средний = 0,454ε)

Якоби Эллиптик: случайные малые значения

Макс = 26,2ε (Средний = 1,17ε)

Макс = 0ε (Mean = 0ε)

GSL 1.16:Макс = 55.2ε (Mean = 1,64ε)И другие сбои.)
Цефес:Макс = +INFε (Средний = +INFε)И другие неудачи.

Макс = 10.4ε (Средний = 0,594ε)

Макс = 10,4ε (Средний = 0,602ε)

Якоби Эллиптик: Модуль около 1

Макс = 513ε (Средний = 126ε)

Макс = 0,919ε (Средний = 0,127ε)

GSL 1.16:Макс = 0ε (Средний = 0ε)И другие неудачи.)
Цефе:Макс = +INFε (Средний = +INFε)И другие неудачи.

Макс = 675ε (Средний = 87.1ε)

Макс = 675ε (Средний = 86.8ε)

Якоби Эллиптик: Большой Фи

Макс = 3,27e+004ε (Средний = 1,93e+003ε)

Макс = 14.2ε (Mean = 0.927ε)

GSL 1.16:Макс = 5.92e+03ε (Mean = 477ε)]
Цефес:Макс = 3.27e+04ε (Mean = 1.93e+03ε)

Макс = 2,97e+04ε (Средний = 1,9e+03ε)

Макс = 2,97e+04ε (Средний = 1,9e+03ε)


Table 6.71. Error rates for jacobi_dn

Microsoft Visual C++ версия 12.0
Win32
двойная

GNU C++ версия 5.1.0
Linux
double

GNU C++ версия 5.1.0
Linux
длинный двойной

Солнечный компилятор версии 0x5130
Солнечный солярис

Якоби Эллиптик: Данные Mathworld

Макс = 34.3ε (Средний = 8.71ε)

Макс = 0ε (Mean = 0ε)

GSL 1.16:Макс = 2.82ε (Mean = 1.18ε)И другие сбои.)
Цефе:Макс = +INFε (Средний = +INFε)И другие неудачи.

Макс = 49ε (Средний = 14ε)

Макс = 49ε (Средний = 14ε)

Якоби Эллиптик: Случайные данные

Макс = 1,52ε (Средний = 0,466ε)

Макс = 0ε (Mean = 0ε)

GSL 1.16:Макс = 3ε (Mean = 0.61ε)]
Цефес:Макс = 1,49ε (Mean = 0,321ε)]

Макс = 1.53ε (Средний = 0.473ε)

Макс = 1.53ε (Средний = 0.481ε)

Якоби Эллиптик: случайные малые значения

Макс = 16.1ε (Средний = 0.685ε)

Макс = 0,5ε (Средний = 0,0122ε)

GSL 1.16:Макс = 1,5ε (Средний = 0,391ε)И другие неудачи.]
Цефе:Макс = +INFε (Средний = +INFε)И другие неудачи.

Макс = 22.4ε (Средний = 0.777ε)

Макс = 22.4ε (Средний = 0.763ε)

Якоби Эллиптик: Модуль около 1

Макс = 6.24e+003ε (Средний = 482ε)

Max = 2.28ε (Mean = 0,194ε)

GSL 1.16:Max = 0ε (Mean = 0ε)И другие неудачи.)
Цефес:Макс = +INFε (Средний = +INFε)И другие неудачи.

Макс = 3,75e+03ε (Средний = 293ε)

Макс = 3,75e+03ε (Средний = 293ε)

Якоби Эллиптик: Большой Фи

Макс = 1,67e+004ε (Средний = 1e+003ε)

Макс = 14.1ε (Mean = 0.897ε)

GSL 1.16:Макс = 121ε (Mean = 22ε)]
Цефес:Макс = 196ε (Mean = 30.2ε)]

Макс = 2,82e+04ε (Средний = 1,79e+03ε)

Макс = 2,82e+04ε (Средний = 1,79e+03ε)


Table 6.72. Error rates for jacobi_sn

Microsoft Visual C++ версия 12.0
Win32
двойная

GNU C++ версия 5.1.0
Linux
double

GNU C++ версия 5.1.0
Linux
длинный двойной

Солнечный компилятор версии 0x5130
Солнечный солярис

Якоби Эллиптик: Данные Mathworld

Макс = 481ε (Средний = 113ε)

Макс = 0ε (Mean = 0ε)

GSL 1.16:Макс = 588ε (Mean = 146ε)И другие неудачи.)
Цефес:Макс = +INFε (Средний = +INFε)И другие неудачи.

Макс = 341ε (Средний = 80,7ε)

Макс = 341ε (Средний = 80,7ε)

Якоби Эллиптик: Случайные данные

Макс = 1,92ε (Средний = 0,567ε)

Макс = 0ε (Mean = 0ε)

GSL 1.16:Макс = 4.02ε (Mean = 1,07ε)]
Цефес:Макс = 1,92ε (Mean = 0,567ε)]

Макс = 2.01ε (Средний = 0,584ε)

Макс = 2.01ε (Средний = 0,593ε)

Якоби Эллиптик: случайные малые значения

Макс = 2.11ε (Средний = 0.385ε)

Max = 0ε (Mean = 0ε)

GSL 1.16:Max = 11.7ε (Mean = 1,65ε)И другие сбои.)
Цефес:Макс = +INFε (Средний = +INFε)И другие неудачи.

Макс = 1,99ε (Средний = 0,347ε)

Макс = 1,99ε (Средний = 0,347ε)

Якоби Эллиптик: Модуль около 1

Макс = 23,2ε (Средний = 1,85ε)

Макс = 0ε (Mean = 0ε)

GSL 1.16:Макс = 0ε (Mean = 0ε)И другие сбои.)
Цефес:Макс = +INFε (Средний = +INFε)И другие неудачи.

Макс = 109ε (Средний = 7.35ε)

Макс = 109ε (Средний = 7.38ε)

Якоби Эллиптик: Большой Фи

Макс = 4,36e+004ε (Средний = 2,54e+003ε)

Макс = 12ε (Mean = 0.771ε)
GSL 1.16:Макс = 4.54e+04ε (Mean = 2.63e+03ε)]
Цефес:Макс = 4.36e+04ε (Mean = 2.54e+03ε)

Макс = 2,45e+04ε (Средний = 1,51e+03ε)

Макс = 2,45e+04ε (Средний = 1,51e+03ε)


Testing

В тестах используется смесь значений точечного теста, рассчитанных с помощью онлайн-калькулятораfunctions.wolfram.com, и случайных тестовых данных, генерируемых с использованием MPFR с 1000-битной точностью и этой реализацией.

Implementation

Дляk >1мы применяем отношения:

Затем отфильтровать специальные случаи:

sn(0, k) = 0иcn(0, k) = dn(0, k) = 1.

sn(u, 0) = sin(u), cn(u, 0) = cos(u) и dn(u, 0) = 1.

sn(u, 1) = tanh(u), cn(u, 1) = dn(u, 1) = 1/cosh(u).

И дляk4< & #949;у нас есть:

В противном случае значения рассчитываются методомарифметических геометрических средств.


PrevUpHomeNext

Статья Jacobi Elliptic SN, CN and DN раздела Math Toolkit 2.5.0 Jacobi Elliptic Functions может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Jacobi Elliptic Functions ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 01:39:18/0.027046918869019/1