eddy_em: (Костерок)
[personal profile] eddy_em
«Как она ни плакала…», а все равно нужно реализовать разложение волнового фронта (а затем — и градиентного поля для восстановления ВФ) по ортонормированным на кольце полиномам, линейно зависимым от полиномов Цернике (чтобы можно было восстановить по найденным коэффициентам разложения коэффициенты Цернике).
Пока — размышления.
Классикой в этом деле является статья Mahajan V.N. «Zernike annular polynomials for imaging systems with annular pupils», вот ее данные:
@ARTICLE{1981JOSA...71...75M,
   author = {{Mahajan}, V.~N.},
    title = "{Zernike annular polynomials for imaging systems with annular pupils.}",
  journal = {Journal of the Optical Society of America (1917-1983)},
 keywords = {Astronomical Optics},
     year = 1981,
   volume = 71,
    pages = {75-85},
   adsurl = {http://adsabs.harvard.edu/abs/1981JOSA...71...75M},
  adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

Mahajan предлагает довольно-таки громоздкую схему ортогонализации (по Грэму-Шмидту), достоинство которой в том, что вычисляются лишь нужные N полиномов, а недостаток в том, что делается это рекурсивно.
У Mahajan выводятся полиномы общего вида (к тому же непрерывные, а не дискретные). Учитывая то, что физического смысла в этих полиномах нет, можно попробовать реализовать какой-нибудь другой вариант.

Матричные методы

Эти методы в основном являются разными видами ортогонализации. К счастью, ортогонализация — очень популярный в алгебре процесс, поэтому в GSL все необходимое есть, т.е. одним велосипедом получается меньше.
Итак, мы имеем значения волнового фронта в M точках (вектор-столбец), W, и значения N полиномов Цернике (в нотации Нолля) в данных точках (матрица M строк на N столбцов), Z. Нам надо найти N коэффициентов Цернике (вектор-столбец), z, для однозначной аппроксимации данного волнового фронта, т.е. в идеале должно получиться
Z · z = W.
Так как Z не ортогональны на кольце, необходимо ввести промежуточный класс полиномов, U, по которым можно будет разложить волновой фронт: U·u=W, а сами U должны быть линейно зависимыми от Z (чтобы можно было однозначно восстановить z, зная b).
Одним словом, матричные методы базируются на следующих уравнениях:
U = Z · k, UT ≡ U-1 → u = WTU = UTW,
а так как U k-1 = Z, получим, что коэффициенты u очень просто преобразуются в z: z = u k-1. Следовательно, задача — правильно выбрать матрицу k, чтобы получить ортогональную матрицу U.

QR-декомпозиция

Неортогональная матрица A (в нашем случае — полиномы Цернике для кольца) может быть разложена на ортогональную Q и треугольную (верхнюю) R:
A = Q · R.
Матрица A может быть прямоугольной, N столбцов (количество полиномов) и M строк (количество точек с данными), в этом случае ортогональным базисом будут первые N столбцов квадратной матрицы Q.
Каждый столбец матрицы R будет представлять собой коэффициенты для выражения ортогональных полиномов через неортогональные. Восстановить затем коэффициенты оригинальных полиномов можно по строкам матрицы R: сумма элементов каждой строки и есть искомые коэффициенты.
В общем, в данном случае U ≡ Q и k ≡ R-1.
Если мы работаем с набором в несколько тысяч точек, этот метод будет пожирать очень много ресурсов! Однако, с точки зрения формальной реализации он, пожалуй, наипростейший.

Разложение Холецкого

(если бы не глянул на ссылку на русскую статью в википедии, так и думал бы дальше, что фамилия — Чолески, а не Холецкий!)
В данном случае используется тот факт, что ATA можно представить как произведение левой диагональной матрицы на ее сопряжение:
AT·A = L·LT.
Ортогональный базис получаем, умножая оригинал на (L-1)T:
U ≡ A (L-1)T,
отсюда получаем: k ≡ (L-1)T.

Метод Mahajan

Конечно, в случае неудачи матричных способов можно будет попробовать и оригинальный метод Mahajan. К сожалению, он имеет зависимость от ε, поэтому затабулировать его заранее не получится, а рекурсия не даст полноценно распараллелить вычисления.
Судя по тому, что во всех найденных мной статьях авторы ссылаются на оригинальную статью Mahajan, другие варианты если и есть, то «сокрыты они за семью печатями».
Кстати, я даже нагуглил готовый код для вычисления ортогональных на кольце полиномов Цернике по Mahajan, но, к сожалению, они написаны под Wolfram mathematica, т.е. толку от него не больше, чем от формул у Махаджи (хотя, нет: у Махаджи понятней).

April 2025

S M T W T F S
  1 23 45
67 89101112
13141516171819
20212223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 22nd, 2025 02:40 am
Powered by Dreamwidth Studios