Obtain Hessian matrix from a sum of squares expression
    3 views (last 30 days)
  
       Show older comments
    
    Yannis Stamatiou
 on 10 May 2023
  
    
    
    
    
    Commented: Yannis Stamatiou
 on 11 May 2023
            Hi,
I have been trying to obtatin the Hessian matrix of a complex quadratic expression of 2-d variables so as to write the quadratic optimization problam I have in matrix form. However, no matter how hard I tried, I could not find a way to accomplish this.
The expression looks like
0.0010309*x(11, 7)*x(13, 9) + 0.0016748*x(15, 11)*x(13, 9) + 0.0025*x(12, 7)*x(14, 9) + 0.00049916*x(16, 11)*x(14, 9) + 9.6648e-06*x(13, 7)*x(15, 9) + 0.0024*x(14, 7)*x(16, 9) + 3.5338e-07*x(3, 12)*x(1, 10) + 0.0019432*x(4, 12)*x(2, 10) + 0.0025*x(1, 8)*x(3, 10) + 0.0017032*x(5, 12)*x(3, 10) + 3.4478e-07*x(2, 8)*x(4, 10)
but with variables indexed up to 64 in each dimension. This is stored in the problem.Objective field of an minimization problem I set up. I tried the coeff function but it needed a list of variable, which are too many to list. Any help would be greatly appreciated.
Thanks,
Yannis
0 Comments
Accepted Answer
  Matt J
      
      
 on 10 May 2023
        
      Edited: Matt J
      
      
 on 10 May 2023
  
      x=optimvar('x',[64,64]);
Objective=0.0010309*x(11, 7)*x(13, 9) + 0.0016748*x(15, 11)*x(13, 9) + 0.0025*x(12, 7)*x(14, 9) + 0.00049916*x(16, 11)*x(14, 9) + 9.6648e-06*x(13, 7)*x(15, 9) + 0.0024*x(14, 7)*x(16, 9) + 3.5338e-07*x(3, 12)*x(1, 10) + 0.0019432*x(4, 12)*x(2, 10) + 0.0025*x(1, 8)*x(3, 10) + 0.0017032*x(5, 12)*x(3, 10) + 3.4478e-07*x(2, 8)*x(4, 10);
prob=optimproblem('Objective',Objective);
Hessian=prob2struct(prob).H
More Answers (1)
  Torsten
      
      
 on 10 May 2023
        
      Edited: Torsten
      
      
 on 10 May 2023
  
      Each optimizer expects the unknowns as a vector, not as a 2d-matrix.
So choose an arrangement of your unknowns in a vector of size (64^2,1). Then use MATLAB's "hessian" function to build the Hessian of your expression. Once you've created it with the symbolic toolbox, you can write it to file for use in a numerical computation. Since your expression seems to be quadratic, your Hessian will be constant, I guess.
4 Comments
See Also
Categories
				Find more on Quadratic Programming and Cone Programming in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

