![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Jacobi Elliptic SN, CN and DNBoost , Math Toolkit 2.5.0 , Jacobi Elliptic Functions
|
![]() |
Note |
---|---|
& #966;называется амплитуда. kназывается модуль. |
![]() |
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 они становятся гиперболическими функциями:
Эти функции вычисляются с использованием только базовых арифметических операций и тригомометрических функций, поэтому нет большого различия в точности по сравнению с различными платформами. Как правило, ошибки тривиально малы для небольших углов и, как это типично для циклических функций, растут по мере увеличения угла. Обратите внимание, что только результаты для самого широкого типа с плавающей запятой в системе приведены, поскольку более узкие типы имеютфактически нулевую ошибку. Все значения являются относительными погрешностями в единицах эпсилона.
Table 6.70. Error rates for jacobi_cn
Microsoft Visual C++ версия 12.0 |
GNU C++ версия 5.1.0 |
GNU C++ версия 5.1.0 |
Солнечный компилятор версии 0x5130 |
|
---|---|---|---|---|
Якоби Эллиптик: Данные Mathworld |
Макс = 45,8ε (Средний = 11,4ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 71.6ε (Средний = 19.3ε) |
Макс = 71.6ε (Средний = 19.4ε) |
Якоби Эллиптик: Случайные данные |
Макс = 1,83ε (Средний = 0,455ε) |
Макс = 0.816ε (Mean = 0,0563ε) |
Макс = 1,68ε (Средний = 0,443ε) |
Макс = 1,68ε (Средний = 0,454ε) |
Якоби Эллиптик: случайные малые значения |
Макс = 26,2ε (Средний = 1,17ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 10.4ε (Средний = 0,594ε) |
Макс = 10,4ε (Средний = 0,602ε) |
Якоби Эллиптик: Модуль около 1 |
Макс = 513ε (Средний = 126ε) |
Макс = 0,919ε (Средний = 0,127ε) |
Макс = 675ε (Средний = 87.1ε) |
Макс = 675ε (Средний = 86.8ε) |
Якоби Эллиптик: Большой Фи |
Макс = 3,27e+004ε (Средний = 1,93e+003ε) |
Макс = 14.2ε (Mean = 0.927ε) |
Макс = 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 |
GNU C++ версия 5.1.0 |
GNU C++ версия 5.1.0 |
Солнечный компилятор версии 0x5130 |
|
---|---|---|---|---|
Якоби Эллиптик: Данные Mathworld |
Макс = 34.3ε (Средний = 8.71ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 49ε (Средний = 14ε) |
Макс = 49ε (Средний = 14ε) |
Якоби Эллиптик: Случайные данные |
Макс = 1,52ε (Средний = 0,466ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 1.53ε (Средний = 0.473ε) |
Макс = 1.53ε (Средний = 0.481ε) |
Якоби Эллиптик: случайные малые значения |
Макс = 16.1ε (Средний = 0.685ε) |
Макс = 0,5ε (Средний = 0,0122ε) |
Макс = 22.4ε (Средний = 0.777ε) |
Макс = 22.4ε (Средний = 0.763ε) |
Якоби Эллиптик: Модуль около 1 |
Макс = 6.24e+003ε (Средний = 482ε) |
Max = 2.28ε (Mean = 0,194ε) |
Макс = 3,75e+03ε (Средний = 293ε) |
Макс = 3,75e+03ε (Средний = 293ε) |
Якоби Эллиптик: Большой Фи |
Макс = 1,67e+004ε (Средний = 1e+003ε) |
Макс = 14.1ε (Mean = 0.897ε) |
Макс = 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 |
GNU C++ версия 5.1.0 |
GNU C++ версия 5.1.0 |
Солнечный компилятор версии 0x5130 |
|
---|---|---|---|---|
Якоби Эллиптик: Данные Mathworld |
Макс = 481ε (Средний = 113ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 341ε (Средний = 80,7ε) |
Макс = 341ε (Средний = 80,7ε) |
Якоби Эллиптик: Случайные данные |
Макс = 1,92ε (Средний = 0,567ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 2.01ε (Средний = 0,584ε) |
Макс = 2.01ε (Средний = 0,593ε) |
Якоби Эллиптик: случайные малые значения |
Макс = 2.11ε (Средний = 0.385ε) |
Max = 0ε (Mean = 0ε) |
Макс = 1,99ε (Средний = 0,347ε) |
Макс = 1,99ε (Средний = 0,347ε) |
Якоби Эллиптик: Модуль около 1 |
Макс = 23,2ε (Средний = 1,85ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 109ε (Средний = 7.35ε) |
Макс = 109ε (Средний = 7.38ε) |
Якоби Эллиптик: Большой Фи |
Макс = 4,36e+004ε (Средний = 2,54e+003ε) |
Макс = 12ε (Mean = 0.771ε) |
Макс = 2,45e+04ε (Средний = 1,51e+03ε) |
Макс = 2,45e+04ε (Средний = 1,51e+03ε) |
В тестах используется смесь значений точечного теста, рассчитанных с помощью онлайн-калькулятораfunctions.wolfram.com, и случайных тестовых данных, генерируемых с использованием MPFR с 1000-битной точностью и этой реализацией.
Для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;у нас есть:
В противном случае значения рассчитываются методомарифметических геометрических средств.
Статья Jacobi Elliptic SN, CN and DN раздела Math Toolkit 2.5.0 Jacobi Elliptic Functions может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Jacobi Elliptic Functions ::
реклама |