01 /*
02 * $Id: QzDecomposeSample.java,v 1.8 2008/02/02 03:06:27 koga Exp $
03 *
04 * Copyright (C) 2004 Koga Laboratory. All rights reserved.
05 *
06 */
07 package matxbook.chap08;
08
09 import org.mklab.nfc.matrix.DoubleMatrix;
10 import org.mklab.nfc.matrix.Matrix;
11
12
13 /**
14 * @author koga
15 * @version $Revision: 1.8 $, 2004/04/15
16 */
17 public class QzDecomposeSample {
18
19 /**
20 * メインメソッド
21 *
22 * @param args コマンドライン引数
23 */
24 @SuppressWarnings("nls")
25 public static void main(String[] args) {
26 DoubleMatrix a = new DoubleMatrix(new double[][] { {1, 2}, {6, 5}});
27 DoubleMatrix b = new DoubleMatrix(new double[][] { {3, 4}, {2, 1}});
28 Matrix[] abqzx = a.qzDecompose(b);
29 Matrix aa = abqzx[0];
30 Matrix bb = abqzx[1];
31 Matrix q = abqzx[2];
32 Matrix z = abqzx[3];
33 Matrix x = abqzx[4];
34
35 q.conjugateTranspose().multiply(a).multiply(z).subtract(aa).print("Q#*A*Z - AA");
36 q.conjugateTranspose().multiply(b).multiply(z).subtract(bb).print("Q#*B*Z - BB");
37 Matrix m1 = a.multiply(x).multiply(bb.diagonalToVector());
38 Matrix m2 = b.multiply(x).multiply(aa.diagonalToVector());
39 m1.subtract(m2).print("A*X*diag_vec(BB) - B*X*diag_vec(AA)");
40 }
41 }
|