org.mklab.nfc.leq
クラス DoubleComplexLUDecomposer

java.lang.Object
  上位を拡張 org.mklab.nfc.leq.DoubleComplexLUDecomposer

public final class DoubleComplexLUDecomposer
extends Object

倍精度(double)型の複素行列のLU分解(P*A=L*U)を求めるためのクラスです。

バージョン:
$Revision: 1.4 $
作成者:
matsuki

コンストラクタの概要
DoubleComplexLUDecomposer()
           
 
メソッドの概要
 LUDecompositionDoubleComplexElements decompose(double[][] aRe, double[][] aIm, double tolerance)
          複素行列のLU分解を返します。
 LUDecompositionDoubleComplexElements decomposeWithPermutation(double[][] aRe, double[][] aIm, double tolerance)
          複素行列の並べ替え付きLU分解を返します。
 double[] getDeterminant(double[][] aRe, double[][] aIm, double tolerance)
          行列式を返します。
 double[][][] inverse(double[][] aRe, double[][] aIm, double tolerance)
          複素行列の逆行列を返します。
 double[][][] leftDivide(double[][] aRe, double[][] aIm, double[][] bRe, double[][] bIm, double tolerance)
           
 double[][] solveLinearEquation(double[][] aRe, double[][] aIm, double[] bRe, double[] bIm, double tolerance)
          線形方程式の解を返します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

DoubleComplexLUDecomposer

public DoubleComplexLUDecomposer()
メソッドの詳細

decompose

public LUDecompositionDoubleComplexElements decompose(double[][] aRe,
                                                      double[][] aIm,
                                                      double tolerance)
複素行列のLU分解を返します。

複素行列をA、下三角行列を行置換した行列をL、上三角行列をUとすると、これらの行列の間には、

A = Q * H * Q#
Q# * Q = I
の関係が成り立ちます。

パラメータ:
aRe - 複素行列の実部
aIm - 複素行列の虚部
tolerance - 許容誤差
戻り値:
Lの実部、Lの虚部、Uの実部、Uの虚部

decomposeWithPermutation

public LUDecompositionDoubleComplexElements decomposeWithPermutation(double[][] aRe,
                                                                     double[][] aIm,
                                                                     double tolerance)
複素行列の並べ替え付きLU分解を返します。

複素行列をA、下三角行列を行置換した行列をL、上三角行列をU、置換行列をPとすると、これらの行列の間には、

P * A = Q * H * Q#
Q# * Q = I
の関係が成り立ちます。

パラメータ:
aRe - 複素行列の実部
aIm - 複素行列の虚部
tolerance - 許容誤差
戻り値:
Lの実部、Lの虚部、Uの実部、Uの虚部、Pの実部、Pの虚部

solveLinearEquation

public double[][] solveLinearEquation(double[][] aRe,
                                      double[][] aIm,
                                      double[] bRe,
                                      double[] bIm,
                                      double tolerance)
線形方程式の解を返します。

実部aRe、虚部aImで表される複素行列をA、実部bRe、虚部bImで表されるベクトルをbとするとき、

A*x = b
の解xが返り値となります。

パラメータ:
aRe - 係数行列の実部
aIm - 係数行列の行列
bRe - 実部
bIm - 行列
tolerance - 許容誤差
戻り値:
解の実部と虚部

inverse

public double[][][] inverse(double[][] aRe,
                            double[][] aIm,
                            double tolerance)
複素行列の逆行列を返します。

パラメータ:
aRe - 複素行列の実部
aIm - 複素行列の虚部
tolerance - 許容誤差
戻り値:
複素行列の逆行列

leftDivide

public double[][][] leftDivide(double[][] aRe,
                               double[][] aIm,
                               double[][] bRe,
                               double[][] bIm,
                               double tolerance)
パラメータ:
aRe - 左行列の実部
aIm - 左行列の虚部
bRe - 右行列の実部
bIm - 右行列の虚部
tolerance - 許容誤差
戻り値:
割り算の結果の実部と虚部

getDeterminant

public double[] getDeterminant(double[][] aRe,
                               double[][] aIm,
                               double tolerance)
行列式を返します。

パラメータ:
aRe - 複素行列の実部
aIm - 複素行列の虚部
tolerance - 許容誤差
戻り値:
行列式(第1成分に実部,第2成分に虚部)