Dlyap.java
/*
* $Id: Dlyap.java,v 1.10 2008/02/28 00:42:50 koga Exp $
*
* Copyright (C) 2004 Koga Laboratory. All rights reserved.
*/
package org.mklab.tool.control;
import org.mklab.nfc.matrix.DoubleMatrix;
/**
* 離散時間系のリヤプノ方程式の解を求めるクラスです。
*
* <p>Solution of discrete-time Lyapunov equation
*
* @author koga
* @version $Revision: 1.10 $
* @see org.mklab.tool.control.Lyap
*/
public class Dlyap {
/**
* 離散時間システムのリカッティ方程式
*
* <pre><code> A*P*A# + Q = P </code></pre>
*
* の解を返します。
*
* @param A 離散時間系のシステム行列 (system matrix)
* @param Q 定数行列 (constant matrix)
* @return 解 (solution)
*/
public static DoubleMatrix dlyap(DoubleMatrix A, DoubleMatrix Q) {
String message;
if ((message = Abcdchk.abcdchk(A)).length() > 0) {
throw new RuntimeException(message);
}
final int n = A.getRowSize();
final DoubleMatrix A2 = A.add(A.createUnit(n)).leftDivide(A.subtract(A.createUnit(n)));
final DoubleMatrix Q2 = (A.createUnit(n).subtract(A2)).multiply(Q).multiply((A.createUnit(n).subtract(A2.conjugateTranspose())).divide(2));
return Lyap.lyap(A2, Q2);
}
}