2016-04-11 6 views
0

В пакете CVX для Matlab я хочу свести к минимуму функцию типа $ | Ax-b | _2^2 $. Значение квадрата 2-нормы. Как мне закодировать это в CVX? Я пытался как:Как квадрат нормы в CVX?

minimize (norm(A*x-b,2)^2); 

и

minimize (norm(A*x-b,2)*norm(A*x-b,2)); 

но оба бросали ошибки. Есть ли встроенная функция, которую я должен использовать?

(Обратите внимание, что я пытаюсь свести к минимуму сумму этого квадрата нормы плюс еще одну норму, например minimize (norm(A*x-b,2)^2 + norm(x,1));, поэтому я пытаюсь определить квадрат нормы и не просто доволен поиском минимума нормы unsquared .)

+0

насчет [ 'sum_square_abs (A * Xb)'] (http://web.cvxr.com/cvx/doc/dcp.html#scalar -Квадратная-форма)? Кроме того, независимо от успеха, мне интересно, почему вы хотите это сделать; минимизация нормы - минимизация квадрата нормы. – TroyHaskin

+1

Ну квадратная норма дифференцируема, а сама норма - нет. Это большой плюс. – leo

ответ

1

CVX не поддерживает оператора ()^2. Вы можете сделать

(A*x-b)'*(A*x-b) 

или

power(2,norm(A*x-b,2)) 

 Смежные вопросы

  • Нет связанных вопросов^_^