org.mklab.nfc.svd
クラス DoubleComplexSingularValueDecomposer

java.lang.Object
  上位を拡張 org.mklab.nfc.svd.DoubleComplexSingularValueDecomposer

public final class DoubleComplexSingularValueDecomposer
extends Object

倍精度(double)型の複素行列の特異値分解を行うためのクラスです。

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

コンストラクタの概要
DoubleComplexSingularValueDecomposer()
           
 
メソッドの概要
 double conditionNumber(double[][] ar, double[][] ai)
          複素行列の条件数を返します。
 boolean isFullRank(double[][] aRe, double[][] aIm, double tolerance)
          複素行列がフルランクであるか判定します。
 boolean isSingular(double[][] aRe, double[][] aIm, double tolerance)
          複素行列が非正則であるか判定します。
 double[][][] kernel(double[][] aRe, double[][] aIm, double tolerance)
          複素行列のカーネル(零空間)を張るベクトルからなる行列を返します。
 double[][][] leastSquare(double[][] aRe, double[][] aIm, double[][] bRe, double[][] bIm, double toleance)
          線形方程式の解を返します。
 double maximumSingularValue(double[][] aRe, double[][] aIm)
          複素行列の最大特異値を返します。
 double minimumSingularValue(double[][] aRe, double[][] aIm)
          複素行列の最小特異値を返します。
 double norm(double[][] ar, double[][] ai)
          複素行列の最大特異値(2-ノルム)を返します。
 double[][][] pseudoInverse(double[][] aRe, double[][] aIm, double tolerance)
          複素行列の擬似逆行列を返します。
 int rank(double[][] aRe, double[][] aIm, double tolerance)
          複素行列のランク(階数)を返します。
 double[] singularValue(double[][] aRe, double[][] aIm)
          複素行列の特異値を返します。
 SingularValueDecompositionDoubleComplexElements singularValueDecompose(double[][] aRe, double[][] aIm)
          複素行列を特異値分解を返します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

DoubleComplexSingularValueDecomposer

public DoubleComplexSingularValueDecomposer()
メソッドの詳細

singularValueDecompose

public SingularValueDecompositionDoubleComplexElements singularValueDecompose(double[][] aRe,
                                                                              double[][] aIm)
複素行列を特異値分解を返します。

対象となる行列をA、特異値を対角成分とする対角行列を D、左特異ベクトルからなるユニタリー行列をU、右特異ベクトルからなるユニタリー行列をVとすると、

A = U * D * V #
 の関係が成り立ちます。

パラメータ:
aRe - 複素行列の実部
aIm - 複素行列の虚部
戻り値:
Uの実部、Uの虚部、Dの実部、Dの虚部(全て零)、Vの実部、Vの虚部

singularValue

public double[] singularValue(double[][] aRe,
                              double[][] aIm)
複素行列の特異値を返します。

パラメータ:
aRe - 複素行列の実部
aIm - 複素行列の虚部
戻り値:
特異値

maximumSingularValue

public double maximumSingularValue(double[][] aRe,
                                   double[][] aIm)
複素行列の最大特異値を返します。

パラメータ:
aRe - 複素行列の実部
aIm - 複素行列の虚部
戻り値:
最大特異値

minimumSingularValue

public double minimumSingularValue(double[][] aRe,
                                   double[][] aIm)
複素行列の最小特異値を返します。

パラメータ:
aRe - 複素行列の実部
aIm - 複素行列の虚部
戻り値:
最小特異値

isSingular

public boolean isSingular(double[][] aRe,
                          double[][] aIm,
                          double tolerance)
複素行列が非正則であるか判定します。

パラメータ:
aRe - 複素行列の実部
aIm - 複素行列の虚部
tolerance - 許容誤差
戻り値:
非正則ならばtrue、そうでなければfalse

rank

public int rank(double[][] aRe,
                double[][] aIm,
                double tolerance)
複素行列のランク(階数)を返します。

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

isFullRank

public boolean isFullRank(double[][] aRe,
                          double[][] aIm,
                          double tolerance)
複素行列がフルランクであるか判定します。

パラメータ:
aRe - 複素行列の実部
aIm - 複素行列の虚部
tolerance - 許容誤差
戻り値:
フルランクならばtrue、そうでなければfalse

pseudoInverse

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

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

leastSquare

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

実部ar、虚部aiで表される複素行列をA、実部br、虚部biで表される複素行列をBとすとき、

A * X = B
の解即ち
X = A-1 * B
を返します。

パラメータ:
aRe - 係数行列の実部
aIm - 係数行列の虚部
bRe - 実部
bIm - 虚部
toleance - 許容誤差
戻り値:
線形方程式の解

kernel

public double[][][] kernel(double[][] aRe,
                           double[][] aIm,
                           double tolerance)
複素行列のカーネル(零空間)を張るベクトルからなる行列を返します。

許容誤差より小さい特異値をゼロと見なします。

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

norm

public double norm(double[][] ar,
                   double[][] ai)
複素行列の最大特異値(2-ノルム)を返します。

パラメータ:
ar - 複素行列の実部
ai - 複素行列の虚部
戻り値:
最大特異値

conditionNumber

public double conditionNumber(double[][] ar,
                              double[][] ai)
複素行列の条件数を返します。

パラメータ:
ar - 複素行列の実部
ai - 複素行列の虚部
戻り値:
条件数