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

Elliptic Integrals of the Third Kind - Legendre Form

Boost , Math Toolkit 2.5.0 , Elliptic Integrals

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/ellint_3.hpp>
namespace boost { namespace math {
template <class T1, class T2, class T3>
calculated-result-type ellint_3(T1 k, T2 n, T3 phi);
template <class T1, class T2, class T3, class Policy>
calculated-result-type ellint_3(T1 k, T2 n, T3 phi, const Policy&);
template <class T1, class T2>
calculated-result-type ellint_3(T1 k, T2 n);
template <class T1, class T2, class Policy>
calculated-result-type ellint_3(T1 k, T2 n, const Policy&);
}} // namespaces
Description

Эти две функции оценивают неполный эллиптический интеграл третьего рода& #928; (n, & #966;, k)и его полный аналог& #928; (n, k) = E(n, & #960;/2, k).

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

template <class T1, class T2, class T3>
calculated-result-type ellint_3(T1 k, T2 n, T3 phi);
template <class T1, class T2, class T3, class Policy>
calculated-result-type ellint_3(T1 k, T2 n, T3 phi, const Policy&);

Возвращает неполный эллиптический интеграл третьего рода& #928; (n, & #966;, k):

Требует-1<= k<= 1иn< 1/sin2(φ), иначе возвращает результатdomain_error(вне этого диапазона результат будет сложным).

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

template <class T1, class T2>
calculated-result-type ellint_3(T1 k, T2 n);
template <class T1, class T2, class Policy>
calculated-result-type ellint_3(T1 k, T2 n, const Policy&);

Возвращает полный эллиптический интеграл первого родаи #928; (n, k):

Требует-1<= k<= 1иn< 1, иначе возвращает результатdomain_error(вне этого диапазона результат будет сложным).

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

Accuracy

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

Table 6.65. Error rates for ellint_3

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

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

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

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

Elliptic Integral PI: Mathworld Data

Макс = 565ε (Средний = 102ε)

Max = 475ε (Mean = 86.3ε)

:Max = +INFε (Mean = +INFε)И другие сбои.

Max = 0ε (Mean = 0ε)

GSL 1.16:Max = 1,48e+05ε (Mean = 2,54e+04ε)И другие сбои.

Макс = 475ε (Средний = 86.3ε)

Эллиптический интегральный PI: случайные данные

Макс = 9.08ε (Средний = 0.99ε)

Max = 4.54ε (Mean = 0.895ε)

:Max = 3.37e+20ε (Mean = 3.47e+19ε)И другие неудачи.

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

GSL 1.16:Макс = 633ε (Mean = 50.1ε)]

Макс = 4.49ε (Средний = 0.891ε)

Эллиптический интеграл PI: Большие случайные данные

Макс = 2.86ε (Средний = 0.944ε)

Max = 3.7ε (Mean = 0.893ε)

:Max = 2.52e+18ε (Mean = 4.83e+17ε)И другие сбои.

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

GSL 1.16:Макс = 40.1ε (Средний = 7.77ε)]

Макс = 3.7ε (Средний = 0.892ε)


Testing

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

Implementation

Внедрение для Π(n, φ, k) первых сифонов специальных случаев:

Π(0, φ, k) = F(φ, k)

& #928; (n, & #960;/2, k) = & #928; (n, k)

и

Тогда, если n<0 отношений (A&S 17.7.15/16):

Они используются для смещенияnв диапазон [0, 1].

Затем отношения:

& #928; (n, - & #966;, k) = - & #928; (n, & #966;, k)

& #928; (n, & #966; + mπ, k) = & #928; (n, & #966;, k) + 2mΠ (n, k) ; n<= 1

& #928; (n, & #966; + m & #960;, k) = & #928; (n, & #966;, k) ; n >1

Используются для перемещения φ   в диапазон [0, π/2].

Затем функции реализуются с точки зрения интегралов Карлсона с использованием отношений:

и



Я не смог найти литературную ссылку на это отношение, но это, по-видимому, конвенция, используемая Mathematica. Интуитивно первые2 * m * & #928; (n, k)термины отменяются по мере того, как производная чередуется между +∞ и -∞.


PrevUpHomeNext

Статья Elliptic Integrals of the Third Kind - Legendre Form раздела Math Toolkit 2.5.0 Elliptic Integrals может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Elliptic Integrals ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 21:45:32/0.029508113861084/1