eddy_em: (Костерок)
[personal profile] eddy_em
Итак, сегодня я таки реализовал это.
Получилось хреново: то ли эти полиномы очень чувствительны к неоднородности распределения точек, то ли просто хреновые, то ли мое рукожопие сказывается, но получилось даже хуже, чем декомпозиция обычными Церниками.

Для сравнения алгоритмов я делал следующее: волновой фронт "собирался" из полиномов с коэффициентами
double IdxsOri[] = {2., // смещение, 0
	1.1, -0.8, // наклон, 1-2
	5.5, -3.2, 0., // астигматизм, дефокус, аст., 3-5
	6.8, 5.5, 0., 0.,// трилистник, кома, 6-9
	0., 0., 3.3, 1.4, 8.}; // 10-14

В первых двух случаях "сбор" выполнялся по обычным полиномам Цернике, а в третьем — по кольцевым (т.к. преобразование коэффициентов кольцевых полиномов в обычные дело почти что невозможное).
Точки распределялись радиально, вот так:
	int Sz = 256;
	double dTh = D2R(360./32);
	polar *P = MALLOC(polar, Sz), *Pptr = P;
	for(i = 0; i < 8; i++){
		double RR = (double)i * 0.07 + 0.5;
		double Th = 0.;
		for(j = 0; j < 32; j++, Pptr++, Th += dTh){
			Pptr->r = RR;
			Pptr->theta = Th;
		}
	}

Декомпозицию я делал для nmax=7. Буду приводить полученные коэффициенты, погрешности восстановления волнового фронта и погрешности восстановления коэффициентов. И вот что вышло.
1. Декомпозиция обычными полиномами:
0.255, 1.410, -0.800, 5.500, -0.350, 0.063, 6.800, 5.482, 0.000, 0.000, 0.000, 0.000, 1.404, 1.397, 8.000, 0.000, 0.000, 0.009, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 1.209, -0.009, 0.000, 0.000, 0.000, 0.000, 0.000, -0.106, 
Std: 0.393473, max abs diff: 1.50205

(Индексы) Std: 0.98986, max abs diff: 2.84992


2. Подбор обычных полиномов методом наименьших квадратов:
0.639, 2.604, -0.890, 6.370, -0.035, 0.228, 7.954, 4.857, 0.094, 0.000, 0.000, -0.919, 1.709, 1.383, 8.601, 0.000, -1.184, -0.639, -0.046, 0.000, 0.000, 0.000, 0.000, 0.471, 0.000, -0.309, -1.267, 0.000, 0.000, 0.000, 0.570, 0.308, 0.027, 
Std: 5.11381, max abs diff: 6.52512

(Индексы) Std: 1.32304, max abs diff: 3.16545


3. Декомпозиция кольцевыми полиномами:
2.825, -0.889, -0.800, 5.500, -3.479, -0.613, 6.800, 5.039, 0.000, 0.000, 0.000, 0.000, 2.876, 1.311, 8.000, 0.000, 0.000, 0.338, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.140, 0.061, 0.000, 0.000, 0.000, 0.000, 0.000, 0.213, 
Std: 0.925624, max abs diff: 2.99611

(Индексы) Std: 0.325278, max abs diff: 1.98926


По набору единичных коэффициентов кольцевые полиномы давали еще более худший результат по сравнению с обычными.

ИТОГ. Или я — идиот… Немного еще посижу завтра над кольцевыми (вдруг я что-то напутал). Если все верно, то получается, я зря потратил время. Но, как говорится, хреновый результат — тоже результат.

Надо будет до отпуска статейку написать в какой-нибудь журнал по моей тематике.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

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 03:10 am
Powered by Dreamwidth Studios