org.mklab.nfc.svd
クラス ComplexSingularValueDecomposer<E extends NumericalScalar<E>>

java.lang.Object
  上位を拡張 org.mklab.nfc.svd.ComplexSingularValueDecomposer<E>
型パラメータ:
E - 複素成分の実部と虚部の型

public final class ComplexSingularValueDecomposer<E extends NumericalScalar<E>>
extends Object

複素行列の特異値分解を行うためのクラスです。


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

コンストラクタの詳細

ComplexSingularValueDecomposer

public ComplexSingularValueDecomposer()
メソッドの詳細

singularValueDecompose

public SingularValueDecompositionElements<ComplexScalar<E>> singularValueDecompose(ComplexScalar<E>[][] a)
複素行列を特異値分解を返します。

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

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

パラメータ:
a - 複素行列
戻り値:
{U, D V}

singularValue

public E[] singularValue(ComplexScalar<E>[][] a)
複素行列の特異値を返します。

パラメータ:
a - 複素行列
戻り値:
特異値

maximumSingularValue

public E maximumSingularValue(ComplexScalar<E>[][] a)
複素行列の最大特異値を返します。

パラメータ:
a - 複素行列
戻り値:
最大特異値

minimumSingularValue

public E minimumSingularValue(ComplexScalar<E>[][] a)
複素行列の最小特異値を返します。

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

isSingular

public boolean isSingular(ComplexScalar<E>[][] a,
                          E tolerance)
複素行列が非正則であるか判定します。

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

rank

public int rank(ComplexScalar<E>[][] a,
                NumericalScalar<?> tolerance)
複素行列のランク(階数)を返します。

パラメータ:
a - 複素行列
tolerance - 許容誤差
戻り値:
ランク

isFullRank

public boolean isFullRank(ComplexScalar<E>[][] a,
                          NumericalScalar<?> tolerance)
複素行列がフルランクであるか判定します。

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

pseudoInverse

public ComplexScalar<E>[][] pseudoInverse(ComplexScalar<E>[][] a,
                                          NumericalScalar<?> tolerance)
複素行列の擬似逆行列を返します。

パラメータ:
a - 複素行列
tolerance - 許容誤差
戻り値:
擬似逆行列

leastSquare

public ComplexScalar<E>[][] leastSquare(ComplexScalar<E>[][] a,
                                        ComplexScalar<E>[][] b,
                                        E toleance)
線形方程式の解を返します。

複素行列をA、複素行列をBとすとき、

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

パラメータ:
a - 係数行列
b - 係数行列
toleance - 許容誤差
戻り値:
線形方程式の解

kernel

public ComplexScalar<E>[][] kernel(ComplexScalar<E>[][] a,
                                   NumericalScalar<?> tolerance)
複素行列のカーネル(零空間)を張るベクトルからなる行列を返します。

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

パラメータ:
a - 複素行列
tolerance - 許容誤差
戻り値:
カーネル

norm

public E norm(ComplexScalar<E>[][] a)
複素行列の最大特異値(2-ノルム)を返します。

パラメータ:
a - 複素行列
戻り値:
最大特異値

conditionNumber

public E conditionNumber(ComplexScalar<E>[][] a)
複素行列の条件数を返します。

パラメータ:
a - 複素行列
戻り値:
条件数