![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Spherical HarmonicsBoost , Math Toolkit 2.5.0 , Polynomials
|
![]() |
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(тета, фи):
Следующая таблица показывает пиковые ошибки для различных областей входных аргументов. Обратите внимание, что только результаты для самого широкого типа с плавающей запятой в системе приведены, поскольку более узкие типы имеютфактически нулевую ошибку. Пиковые ошибки одинаковы как для реальной, так и для мнимой части, поскольку в ошибке преобладает вычисление связанных многочленов Legendre: особенно вблизи корней связанной функции Legendre.
Все значения находятся в единицах эпсилона.
Table 6.38. Error rates for spherical_harmonic_r
Microsoft Visual C++ версия 12.0 |
GNU C++ версия 5.1.0 |
GNU C++ версия 5.1.0 |
Солнечный компилятор версии 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 |
GNU C++ версия 5.1.0 |
GNU C++ версия 5.1.0 |
Солнечный компилятор версии 0x5130 |
|
---|---|---|---|---|
Сферическая гармоника |
Макс = 2.27e+004ε (Средний = 725ε) |
Макс = 1,36ε (Средний = 0,0765ε) |
Макс = 2,89e+03ε (Средний = 108ε) |
Макс = 1,03e+04ε (Средний = 327ε) |
Обратите внимание, что самые худшие ошибки происходят, когда степень увеличивается, значения, превышающие ~ 120, очень маловероятны для получения разумных результатов. Кроме того, относительные ошибки могут расти произвольно, когда функция очень близка к корню.
Используется смесь точечных тестов значений, рассчитанных с помощью functions.wolfram.com, и случайно сгенерированных тестовых данных: тестовые данные были вычислены с использованиемNTL::RRс 1000-битной точностью.
Эти функции реализуются достаточно наивно с использованием формул, приведенных выше. Некоторая дополнительная осторожность принимается для предотвращения ошибки округления при преобразовании из полярных координат (так, например, термин1-x2, используемый связанными функциями Legendre, вычисляется без ошибки округления с использованиемx = cos, и1-x2= sin2(theta)). Ограничивающим фактором в показателях ошибок для этих функций является необходимость вычисления значений вблизи корней связанных функций Legendre.
Статья Spherical Harmonics раздела Math Toolkit 2.5.0 Polynomials может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Polynomials ::
реклама |