Re: Минимизировать функционал
От: ival  
Дата: 11.03.08 03:06
Оценка:
Здравствуйте, shvonder, Вы писали:

S>Есть набор точек на плоскости. Как лучше минимизировать следующий функционал :

S>
                                
S>SUM ( (Ri*sin(arg(R0)+arg(Ri))-abs(R0))^2 ) -> min
S>Здесь:  
S>R0 - искомый вектор_
S>Ri - вектор из начала отчёта до i-ой точки
S>arg - полярный угло, abs - модуль вектора 
S>^2 - квдрат
S>

S>Есть возможность выбрать начальное приближение R0

Если еще актуально:

Я так понимаю, что функция вместо Ri все таки abs(Ri)

Будем искать a=-arg(R0) r = abs (R0);

Тогда функция приобретает вид

SUM (abs(Ri)*sin (a-ai)-r)^2


При фиксированном a минимизировать несложно. Ri*sin (a-ai) — это проецирование на прямую, образующую угол b=a+pi/2 c осью абсцис. Минимум суммы квадратов расстояний достигается в центре тяжести. Должно быть r > 0. По этому если центр тяжести получился отрицательным, то минимум достигается в 0. Если это случилось, то при a=a+pi центр тяжести будет положительным и функция уменьшится.

Таким образом нужно нам нужно искать такой угол, при котором сумма отклонений проекций точек от проекции центра тяжести будет минимальной.

Пусть v-центор тяжести. Перенесем начало координат туда. Тогда координаты точек будут vi=Ri-v, а искомая функция

SUM (abs(vi)^2*cos (b-fi)^2)
где fi=arg(vi);



Исследовать на минимум нужно точки, где производная обращается в 0:

SUM (abs(vi)^2*sin (2b-2fi)) = 0;


Пусть ui = вектор, имеющий длину abs(vi)^2 и arg(ui)=2fi, тогда условие равенства нулю производной будет:

проекция центра тяжести векторов ui на прямую, образующую угол 2b+pi/2 с осью абсцисс совпадает с началом координат, или 2b — это аргумент центра тяжести векторов ui
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.