hess#

Purpose#

Computes the Hessenberg form of a square matrix.

Format#

{ H, Z } = hess(A)#
Parameters:

A (KxK real or complex matrix) – data

Returns:
  • H (KxK matrix) – Hessenberg form.

  • Z (KxK matrix) – transformation matrix.

Examples#

A = { 0.5 0.2 0.33,
      1.4 0.5 0.6,
      0.7 1.2 0.9 };

{ H, Z } = hess(A);

After the code above:

H =  0.500   -0.326    0.206     Z = 1.000    0.000    0.000
    -1.565    1.300   -0.400         0.000   -0.894   -0.447
     0.000   -1.000    0.100         0.000   -0.447    0.894

Remarks#

hess() computes the Hessenberg form of a square matrix. The Hessenberg form is an intermediate step in computing eigenvalues. It also is useful for solving certain matrix equations that occur in control theory (see Van Loan, Charles F. “Using the Hessenberg Decomposition in Control Theory”. Algorithms and Theory in Filtering and Control. Sorenson, D.C. and R.J. Wets, eds., Mathematical Programming Study No. 18, North Holland, Amsterdam, 1982, 102-111).

Z is an orthogonal matrix that transforms A into H and vice versa. Thus:

H = Z'*A*Z

and since Z is orthogonal,

A = Z*H*Z'

A is reduced to upper Hessenberg form using orthogonal similiarity transformations. This preserves the Frobenious norm of the matrix and the condition numbers of the eigenvalues.

See also

Functions eig(), qz(), schur()