Выпуклая оптимизация для Matlab
Я хочу знать, как я могу решить следующую проблему минимизации с Matlab:
А является полуположительной определенной матрицей. (Все собственные значения больше или равны 0) F=F(x_1,...,x_n,y_1,y_2) = (F_1,...,F_2n) - линейная функция.
я хочу найти (x_1,..., x_n, y_1, y_2), чтобы:
F * A * F 'является минимальным. В переменных нет ограничений, но обратите внимание, что они существенно меньше, чем длина вектора.
Я пытаюсь минимизировать статистическое расстояние. Я не могу найти в Интернете, какие функции использовать.
Заранее спасибо.
1 ответ
Для безусловной оптимизации в MATLAB вы можете использовать fminunc
, Для этого вы можете определить свою функцию стоимости:
function z = costfun(x)
f = F*A*F'; % where F is a function of x=[x_1,...y_n]
затем позвоните fminunc
найти минимум. Вектор x0
предоставляется в качестве отправной точки для поиска.
[x,zval] = fminunc(@costfun,x0);