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

Spherical Harmonics

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/spherical_harmonic.hpp>
namespace boost{ namespace math{
template <class T1, class T2>
std::complex<calculated-result-type> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi);
template <class T1, class T2, class Policy>
std::complex<calculated-result-type> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const Policy&);
template <class T1, class T2>
calculated-result-type spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi);
template <class T1, class T2, class Policy>
calculated-result-type spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const Policy&);
template <class T1, class T2>
calculated-result-type spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi);
template <class T1, class T2, class Policy>
calculated-result-type spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy&);
}} // namespaces
Description

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

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

template <class T1, class T2>
std::complex<calculated-result-type> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi);
template <class T1, class T2, class Policy>
std::complex<calculated-result-type> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const Policy&);

Возвращает значение Сферической Гармонии Ynm(тета, фи):

Сферические гармоники Ynm(тета, фи) являются угловой частью решения уравнения Лапласа в сферических координатах, где азимутальная симметрия отсутствует.

[Caution] Caution

Необходимо соблюдать осторожность при правильном определении аргументов для этой функции: θ   принимается как полярная (колатитудинальная) координата с θ   в [0, π] и φ   как азимутальная (продольная) координата с φ   в [0,2π]. Это соглашение, используемое в физике, и соответствует определению, используемому Математикойв функции SpericalHarmonicY, но противоположно обычным математическим соглашениям.

Некоторые другие источники включают дополнительный термин фазы Кондона-Шортли (-1)мв определении этой функции: обратите внимание, однако, что наше определение связанного многочлена Legendre уже включает этот термин.

Эта реализация возвращает ноль для m >n

Для θ   снаружи [0, π] и φ   снаружи [0, 2π] эта реализация следует конвенции, используемой Mathematica: функция является периодической с периодом π   в θ   и 2π   в φ. Обратите внимание, что это не то поведение, которое можно получить от случайного применения определения функции. Осторожные пользователи должны держать & #952; & #160; и & #966; & #160; в диапазоне [0, & #960;] и [0, 2 & #960;] соответственно.

Смотри:Вайсштейн, Эрик У. «Сферическая гармоника». MathWorld — Wolfram Web Resource.

template <class T1, class T2>
calculated-result-type spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi);
template <class T1, class T2, class Policy>
calculated-result-type spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const Policy&);

Возвращает реальную часть Ynm(тета, фи):

template <class T1, class T2>
calculated-result-type spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi);
template <class T1, class T2, class Policy>
calculated-result-type spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy&);

Возвращает мнимую часть Ynm(тета, фи):

Accuracy

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

Все значения находятся в единицах эпсилона.

Table 6.38. Error rates for spherical_harmonic_r

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

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

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

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

Сферическая гармоника

Макс = 2.27e+004ε (Средний = 725ε)

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

Макс = 2,89e+03ε (Средний = 108ε)

Макс = 1,03e+04ε (Средний = 327ε)


Table 6.39. Error rates for spherical_harmonic_i

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

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

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

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

Сферическая гармоника

Макс = 2.27e+004ε (Средний = 725ε)

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

Макс = 2,89e+03ε (Средний = 108ε)

Макс = 1,03e+04ε (Средний = 327ε)


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

Testing

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

Implementation

Эти функции реализуются достаточно наивно с использованием формул, приведенных выше. Некоторая дополнительная осторожность принимается для предотвращения ошибки округления при преобразовании из полярных координат (так, например, термин1-x2, используемый связанными функциями Legendre, вычисляется без ошибки округления с использованиемx = cos, и1-x2= sin2(theta)). Ограничивающим фактором в показателях ошибок для этих функций является необходимость вычисления значений вблизи корней связанных функций Legendre.


PrevUpHomeNext

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




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



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


реклама


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

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