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

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

Эти две функции оценивают неполный эллиптический интеграл D(φ, k) и его полный аналог D(k) = D(π/2, k).

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

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

Возвращает неполный эллиптический интеграл:

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

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

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

Возвращает полный эллиптический интеграл D(k) = D(π/2, k)

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

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

Accuracy

Эти функции тривиально вычислены с точки зрения других эллиптических интегралов и, как правило, имеют очень низкие показатели ошибок (несколько эпсилонов), если параметр φ не является очень большим, в этом случае применяются обычные тригонометрические проблемы снижения аргументов.

Table 6.66. Error rates for ellint_d (complete)

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

GNU C++ версия 5.1.0
linux
двойной

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

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

Elliptic Integral E: Mathworld Data

Max = 0,637ε (Mean = 0,368ε)

Max = 0,637ε (Mean = 0,368ε)

Max = 1,27ε (Mean = 0,735ε)

Max = 1,27ε (Mean = 0,735ε)

Elliptic Integral D: Случайные данные

Max = 1,27ε (Mean = 0,355ε)

Max = 0ε (Mean = 0ε)

Max = 1,27ε (Mean = 0,334ε)

Max = 1,27ε (Mean = 0,334ε)


Table 6.67. Error rates for ellint_d

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

GNU C++ версия 5.1.0
linux
двойной

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

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

Elliptic Integral E: Mathworld Data

Max = 0,862ε (Mean = 0,457ε)

Max = 0ε (Mean = 0ε)

(GSL 1.16: Max = 0.862ε (Mean = 0.568&949;)

Max = 1,3ε (Mean = 0,813ε)

Max = 1,3ε (Mean = 0,813ε)

Elliptic Integral D: Случайные данные

Max = 2,87ε (Mean = 0,805ε)

Max = 0ε (Mean = 0ε)

(GSL 1.16: Max = 3.01ε (Mean = 0.928ε)

Max = 2,51ε (Mean = 0,883ε)

Max = 2,51ε (Mean = 0,883ε)


Testing

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

Implementation

Реализация D(φ, k) сначала выполняет снижение аргументов, используя отношения:

D(-φ, k) = -D(φ, k)

и

D(nπ+φ, k) = 2nD(k) + D(φ, k)

to move φ   to the range [0, π/2].

Функции затем реализуются с точки зрения интегрального RD Карлсона, используя отношение:


PrevUpHomeNext

Статья Elliptic Integral D - 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-20 02:19:12/0.0061240196228027/1