Mercurial > octave-nkf
diff scripts/linear-algebra/qzhess.m @ 2303:5cffc4b8de57
[project @ 1996-06-24 09:15:24 by jwe]
author | jwe |
---|---|
date | Mon, 24 Jun 1996 09:15:24 +0000 |
parents | 5d29638dd524 |
children | 2b5788792cad |
line wrap: on
line diff
--- a/scripts/linear-algebra/qzhess.m Mon Jun 24 08:12:01 1996 +0000 +++ b/scripts/linear-algebra/qzhess.m Mon Jun 24 09:15:24 1996 +0000 @@ -1,37 +1,38 @@ -# Copyright (C) 1996 John W. Eaton -# -# This file is part of Octave. -# -# Octave is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 2, or (at your option) any -# later version. -# -# Octave is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. -# -# You should have received a copy of the GNU General Public License -# along with Octave; see the file COPYING. If not, write to the Free -# Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +### Copyright (C) 1996 John W. Eaton +### +### This file is part of Octave. +### +### Octave is free software; you can redistribute it and/or modify it +### under the terms of the GNU General Public License as published by +### the Free Software Foundation; either version 2, or (at your option) +### any later version. +### +### Octave is distributed in the hope that it will be useful, but +### WITHOUT ANY WARRANTY; without even the implied warranty of +### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +### General Public License for more details. +### +### You should have received a copy of the GNU General Public License +### along with Octave; see the file COPYING. If not, write to the Free +### Software Foundation, 59 Temple Place - Suite 330, Boston, MA +### 02111-1307, USA. function [aa, bb, q, z] = qzhess (a, b) -# Usage: [aa, bb, q, z] = qzhess (a, b) -# -# Compute the qz decomposition of the matrix pencil (a - lambda b) -# -# result: (for Matlab compatibility): -# -# aa = q*a*z and bb = q*b*z, with q, z orthogonal, and -# v = matrix of generalized eigenvectors. -# -# This ought to be done in a compiled program -# -# Algorithm taken from Golub and Van Loan, Matrix Computations, 2nd ed. + ## Usage: [aa, bb, q, z] = qzhess (a, b) + ## + ## Compute the qz decomposition of the matrix pencil (a - lambda b) + ## + ## result: (for Matlab compatibility): + ## + ## aa = q*a*z and bb = q*b*z, with q, z orthogonal, and + ## v = matrix of generalized eigenvectors. + ## + ## This ought to be done in a compiled program + ## + ## Algorithm taken from Golub and Van Loan, Matrix Computations, 2nd ed. -# Written by A. S. Hodel (scotte@eng.auburn.edu) August 1993. + ## Written by A. S. Hodel (scotte@eng.auburn.edu) August 1993. if (nargin != 2) error ("usage: [aa, bb, q, z] = qzhess (a, b)"); @@ -43,7 +44,7 @@ error ("qzhess: incompatible dimensions"); endif -# Reduce to hessenberg-triangular form. + ## Reduce to hessenberg-triangular form. [q, bb] = qr (b); aa = q' * a; @@ -52,14 +53,14 @@ for j = 1:(na-2) for i = na:-1:(j+2) -# disp (["zero out aa(", num2str(i), ",", num2str(j), ")"]) + ## disp (["zero out aa(", num2str(i), ",", num2str(j), ")"]) rot = givens (aa (i-1, j), aa (i, j)); aa ((i-1):i, :) = rot *aa ((i-1):i, :); bb ((i-1):i, :) = rot *bb ((i-1):i, :); q ((i-1):i, :) = rot *q ((i-1):i, :); -# disp (["now zero out bb(", num2str(i), ",", num2str(i-1), ")"]) + ## disp (["now zero out bb(", num2str(i), ",", num2str(i-1), ")"]) rot = givens (bb (i, i), bb (i, i-1))'; bb (:, (i-1):i) = bb (:, (i-1):i) * rot';