Перейти к содержимому

Рисуем основные сферические функции с Matplotlib

Изображение сферических функций достаточно полезно для изучения их свойств. Достаточно легко нарисовать сферические функции можно через библиотеку Matplotlib – де-факто стандарт для научных графиков на Python. Разберём, как это сделать.

Основными или элементарными сферическими функциям называются выражения вида
\(A_{nk} cos{k\lambda}P_{nk} \) и \(B_{nk} sin{k\lambda}P_{nk} \), где \(A_{nk} \), \(B_{nk} \) – гармонические коэффициенты, \(n \) и \(k \) – степень и порядок, \(P_{nk} \) – присоединённые функции Лежандра, \(\vartheta \) и \(\lambda \) – полярное расстояние и долгота.

При \(k = 0 \) имеем зональные гармоники, при \(k = n \) – секториальные, а при \(k \neq n \) – тессеральные.

Есть несколько вариантов отображение сферических функций в Python на любой вкус (раз, два,три,четыре). Однако, на мой взгляд, они все не лишены недостатков. Трёхмерные графики, хоть и красивы, но не дают полного представления, как вёдет себя функция на всей сфере. Это же касается картинок, отображающих только одну сторону сферы \(0^{\circ} \leq \lambda \leq 180^{\circ} \), а также картинок без координатных сеток. Поэтому я решил сделать маленькую компиляцию всех указанных вариантов и вот, что вышло:

Здесь изображены элементарные сферические функции до \(n=3 \), то есть те, которым можно дать физическую интерпретацию. Использована псевдоцилиндрическая проекция Мольвейде, таким образом изображена вся сфера (на графиках именно проекция сферы, а не эллипсоида). Цветовая палитра seismic из Matplotlib удобна тем, что синие области соответствуют отрицательным значениям функций, а красные – положительным. Белые полосы – это нули функций. Также здесь даны именно широты вместо полярных расстояний, как более привычные и наглядные величины.

Исходный код можно посмотреть на GitHub.

С помощью скрипта можно, в общем, нарисовать сферические функции любой степени. Не то чтобы это имело какой-то смысл. При увеличении степени (и порядка) число зон и секторов, на которые сферические функции делят сферу, настолько увеличивается, что рисунок теряет всякую наглядность. Для примера, однако, можно привести графики до \(n = 6\) (осторожно, много весит):

Из последней строки рисунка видно, что зональная гармоника степени \(n=6 \) имеет \(n=6 \) нулей и \(n + 1 = 7 \) зон. Секториальная гармоника \(n=k=6 \) имеет \(2n = 2\cdot 6 = 12\) нулей и делит сферу на \(2n = 2\cdot 6 = 12 \) секторов. Наконец, тессеральные гармоники от \(n=6, k=1 \) до \(n=6, k=5 \) имеют \(2k(n- k + 1) \) клеток. Это справедливо для всех основных сферических функций.

Опубликовано вPythonВизуализацияСферические функции