Решите переопределенные системы, используя квадратическое программирование cgal

Я хочу решить переопределенную систему вида Ax=b где A это (m x n) матрица (с m>n), b это (m) вектор и x вектор неизвестных. Я хочу также связать решение с lb а также ub,

Предоставление следующей программы:
(QP) свести к минимуму transpose(x).D.x+transpose(c).x+c0 при условии Ax⋛b,l≤x≤u

Интересно, как рассчитать матрицу D и вектор c. Поскольку матрица D должна быть симметричной, я определил ее как D=transpose(A).A а также c как c=-transpose(A).b, Мой вопрос: это представление правильно? Если нет, то как мне определить D и c?

1

Решение

«Решение» переопределенной системы Ax = b обычно означает вычисление решения x что сводит к минимуму евклидову норму ошибки e(x) = ||Ax-b||, Если у вас есть дополнительные линейные ограничения формы l <= x <= u тогда действительно вы получите квадратичную программу:

min { 0.5*e(x)^2 } <=> min { 0.5*(Ax-b)'*(Ax-b) }
<=> min { 0.5*x'*A'*A*x -b'Ax + 0.5*b'b) }
<=> min { 0.5*x'*A'*A*x -b'Ax }

с учетом линейных ограничений

l <= x <= u

Таким образом, вы можете определить матрицу D быть половина A'*A (A' средства A transposed):

D = 1/2*A'*A

и вектор c удовлетворить

c' = -b'*A => c = -A'*b

Так что ваш подход не верен, но он был близок!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]