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

Hermite Polynomials

Boost , Math Toolkit 2.5.0 , Polynomials

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/hermite.hpp>
namespace boost{ namespace math{
template <class T>
calculated-result-type hermite(unsigned n, T x);
template <class T, class Policy>
calculated-result-type hermite(unsigned n, T x, const Policy&);
template <class T1, class T2, class T3>
calculated-result-type hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);
}} // namespaces
Description

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

template <class T>
calculated-result-type hermite(unsigned n, T x);
template <class T, class Policy>
calculated-result-type hermite(unsigned n, T x, const Policy&);

Возвращает значение эрмитового полинома порядка n в точке x:

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

Следующий график иллюстрирует поведение первых нескольких эрмитовых полиномов:

template <class T1, class T2, class T3>
calculated-result-type hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);

Реализует три термина рекуррентного отношения для эрмитовых полиномов, эта функция может быть использована для создания последовательности значений, оцененных при том же x, и для повышения n.

Например, мы могли бы создать вектор первых 10 полиномиальных значений, используя:

double x = 0.5;  // Abscissa value
vector<double> v;
v.push_back(hermite(0, x)).push_back(hermite(1, x));
for(unsigned l = 1; l < 10; ++l)
   v.push_back(hermite_next(l, x, v[l], v[l-1]));

Формально аргументами являются:

n

Степень n последнего вычисленного полинома.

x

Значение абсциссы

Hn

Значение полинома оценивается на уровне n.

Hnm1

Значение полинома оценивается на уровне n-1.

Accuracy

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

Table 6.37. Error rates for hermite

Microsoft Visual C++ версия 12.0
Win32

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

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

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

Полиномы эрмитов

Max = 4.46ε (Средний = 1.41ε);

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

Max = 6.24ε (Средний = 2.07ε);

Max = 6.24ε (Средний = 2.07ε);


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

Testing

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

Implementation

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


PrevUpHomeNext

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




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



:: Главная :: Polynomials ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 19:41:13/0.0064551830291748/0