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

Exponential Integral Ei

Boost , Math Toolkit 2.5.0 , Exponential 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/expint.hpp>
namespace boost{ namespace math{
template <class T>
calculated-result-type expint(T z);
template <class T, class Policy>
calculated-result-type expint(T z, const Policy&);
}} // namespaces

Тип возврата этих функций вычисляется с использованием правил расчета типа результата.: Тип возврата<double>, если T является целым типом, и T в противном случае.

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

Description
template <class T>
calculated-result-type expint(T z);
template <class T, class Policy>
calculated-result-type expint(T z, const Policy&);

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

Accuracy

В следующей таблице показаны пиковые ошибки (в единицах эпсилона), обнаруженные на различных платформах с различными типами плавающих точек, а также сравнения с реализацией SPECFUN Коди и библиотекойGSL-1.9. Если не указано иное, любой тип плавающей точки, который является более узким, чем показанный, будет иметьфактически нулевую ошибку.

Table 6.75. Error rates for expint (Ei)

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

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

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

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

Exponential Integral Ei

Max = 1.43ε (Mean = 0.541ε)

Max = 5.05ε (Mean = 0.821ε)

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

Max = 0.994ε (Mean = 0.142ε)

(GSL 1.16: Max = 8.96ε (Mean = 0.703ε))
(Cephes: Max = +INFε (Mean = +INFε) And other failures.)

Max = 3.34ε (Mean = 0.631ε)

Exponential Integral Ei: double exponent range

Max = 1.7ε (Mean = 0.66ε)

Max = 1.72ε (Mean = 0.593ε)

(<tr1/cmath>: Max = 3.11ε (Mean = 1.13ε))

Max = 0.998ε (Mean = 0.156ε)

(GSL 1.16: Max = 1.5ε (Mean = 0.612ε))
(Cephes: Max = 1.77ε (Mean = 0.644ε))

Max = 1.72ε (Mean = 0.618ε)

Exponential Integral Ei: long exponent range

Max = 1.98ε (Mean = 0.595ε)

(<tr1/cmath>: Max = 1.93ε (Mean = 0.855ε))

Max = 1.98ε (Mean = 0.575ε)


Следует отметить, что все три библиотеки, протестированные выше, обеспечивают субэпсилоновую точность по большей части своего диапазона.

GSL имеет наибольшую трудность вблизи положительного корня En, в то время как SPECFUN Cody вместе с этой реализацией значительно увеличивает их частоту ошибок в диапазоне [4,6].

Testing

Тесты для этих функций состоят из двух частей: базовые проверки здравомыслия используют точечные значения, рассчитанные с использованиемонлайн-оценщика Mathworld, в то время как проверки точности используют высокоточные тестовые значения, рассчитанные с точностью 1000 бит сNTL::RRи этой реализацией. Обратите внимание, что общие и типоспецифические версии этих функций используют различные реализации внутри, поэтому это дает нам достаточно независимые данные тестирования. Использование наших тестовых данных для тестирования других «известных хороших» реализаций также обеспечивает дополнительную проверку здравомыслия.

Implementation

Для x<0 эта функция просто вызываетzeta(1, -x): которая, в свою очередь, реализуется с точки зрения рациональных приближений, когда тип x имеет 113 или меньше бит точности.

Для x >0 общая версия реализована с использованием бесконечной серии:

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

Для 0< z< 6 корнесохраняющее приближение формы:

используется, где z0является положительным корнем функции, а R(z/3 - 1) представляет собой минимаксное рациональное приближение, ремасштабируемое таким образом, что оно оценивается выше [-1,1]. Обратите внимание, что в то время как рациональное приближение к [0,6] быстро сходится к минимаксному решению, на практике оно довольно плохо обусловливается. Коди и Тахериспытали ту же проблему и преобразовали полиномы в форму Чебешева, чтобы обеспечить стабильные вычисления. Экспериментом мы обнаружили, что полиномы столь же устойчивы в полиноме, как и чебышевская формапри условии, что они вычисляются через интервал [-1,1].

На протяжении ряда интервалов [a,b] и [b,INF] рациональное приближение принимает форму:

гдеcявляется константой, а R(t) является минимаксным решением, оптимизированным для низкой абсолютной ошибки по сравнению сc. Переменнаяtявляется<1/z>, когда диапазон в бесконечности и<2z/(b-a)-(2a/(b-a)+1)>иначе: это имеет эффект масштабирования z до интервала [-1,1]. Как и прежде, рациональные приближения через произвольные интервалы были признаны необусловленными: Коди и Тэчер решили эту проблему, превратив полиномы в их эквивалент J-фракции. Однако до тех пор, пока интервал оценки был [-1,1] и количество тщательно подобранных терминов, было обнаружено, что полиномымогут быть оценены с подходящей точностью: частота ошибок обычно составляет от 2 до 3 эпсилон, что сопоставимо с частотой ошибок, которую Коди и Тахер достигли с помощью J-фракций, но незначительно более эффективно, учитывая, что задействовано меньшее количество делений.



W. J. Cody and H. C. Thacher, Jr., Rational Chebyshev approximations for the exponential integral E1(x), Math. Comp. 22 (1968), 641-649, and W. J. Cody and H. C. Thacher, Jr., Chebyshev approximations for the exponential integral Ei(x), Math. Comp. 23 (1969), 289-303.


PrevUpHomeNext

Статья Exponential Integral Ei раздела Math Toolkit 2.5.0 Exponential Integrals может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:11:02/0.0078301429748535/0