2012-08-01 1 views
4

Quand je courais quadprog avec sorties F matlab fonctionnelles données:Matlab: quadprog plaindre fonctionnelle est pas symétrique quand il est

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

Cependant, vérifier la différence entre la fonction et il est transposé:

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

ans = 

    (1,1)  7.1054e-015 

Indique qu'ils sont en fait les mêmes. Est-ce que quadprog sort cet avertissement même si la fonction est proche d'être symétrique par une erreur de machine?

Répondre

3

Le test utilisé pour détecter la présence d'antisymétrie dans la source de quadprog est

norm(H-H',inf) > eps 

à-dire qu'il vérifie si la norme infinie est supérieure à la machine epsilon. Puisque

7.1054e-15 > eps = 2.22e-16 

votre Hessian apparaît comme non-symétrique.

Questions connexes