Matlab: функционал жалобы quadprog не является симметричным, когда он

Когда я бегу quadprog с заданным функционалом F выходы Matlab:

Warning: Your Hessian is not symmetric.
Resetting H=(H+H')/2. 

Однако, проверяя разницу между функционалом и его транспонированием:

>> max(max(abs(F-F')))

ans =

   (1,1)     7.1054e-015

Показывает, что они на самом деле одинаковы. Есть ли quadprog вывести это предупреждение, даже если функционал близок к симметричному из-за машинной ошибки?

1 ответ

Решение

Тест на наличие антисимметрии в источнике quadprog

norm(H-H',inf) > eps

то есть он проверяет, больше ли норма бесконечности, чем машинный эпсилон. поскольку

7.1054e-15 > eps = 2.22e-16

ваш гессиан обнаруживается как несимметричный

Другие вопросы по тегам