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
ваш гессиан обнаруживается как несимметричный