jp.go.ipa.jgcl
クラス JgclMatrix

java.lang.Object
  |
  +--jp.go.ipa.jgcl.JgclMatrix
すべての実装インタフェース:
java.lang.Cloneable

public class JgclMatrix
extends java.lang.Object
implements java.lang.Cloneable

実数を要素とする行列を表すクラス。

このクラスのインスタンスは、 行列の各要素の値を含む実数の二次元配列 elm[行][列] を持つ。

バージョン:
$Revision: 1.19 $, $Date: 2000/08/11 06:18:54 $
作成者:
Information-technology Promotion Agency, Japan

内部クラスの概要
 class JgclMatrix.LinearLeastSquareSolution
          条件過剰 (未知数の数よりも方程式の数の方が多い) の連立一次方程式 AX = B に対する最小自乗解 X' を表す内部クラス
 class JgclMatrix.MatrixIsLUDecomposed
          行列が既に LU 分解されていて、要素の値を変更することができないことを示す例外の内部クラス。
 class JgclMatrix.MatrixIsNotSquare
          行列が正方でないことを示す例外の内部クラス。
 
コンストラクタの概要
JgclMatrix(double[][] values)
          実数の二次元配列を与えてオブジェクトを構築する。
JgclMatrix(int r, int c)
          指定された行数/列数を持つオブジェクトを構築する。
 
メソッドの概要
 JgclMatrix add(JgclMatrix mate)
          この行列と他の行列の「和」を表す行列を返す。
 java.lang.Object clone()
          この行列の複製を返す。
 JgclMatrix copy()
          この行列の複製を返す。
 double determinant()
          この行列の行列式の値を返す。
 int getColumnSize()
          この行列の列数を返す。
 double getElementAt(int i, int j)
          この行列の指定の行/列の要素の値を返す。
 int getRowSize()
          この行列の行数を返す。
static void main(java.lang.String[] argv)
          デバッグ用メインプログラム。
 JgclMatrix makeLUDecomposition()
          この行列 (N x N 正方行列) を LU 分解した結果を返す。
 JgclMatrix multiply(JgclMatrix mate)
          この行列と他の行列の「積」を表す行列を返す。
 void setElementAt(int i, int j, double value)
          与えられた値を、この行列の指定の行/列の要素に設定する。
 void setElementsAt(int i, double[] value)
          与えられた一次元配列の各要素の値を、この行列の指定の行の各要素に設定する。
 JgclMatrix.LinearLeastSquareSolution solveLinearLeastSquare(double[] rightHandValues)
          この行列を左辺の一次式の係数 (A) とする 条件過剰 (未知数の数よりも方程式の数の方が多い) の連立一次方程式 AX = B に対する最小自乗解 X' を求める。
 JgclMatrix.LinearLeastSquareSolution solveLinearLeastSquare2(double[] rightHandValues)
          この行列を左辺の一次式の係数 (A) とする 条件過剰 (未知数の数よりも方程式の数の方が多い) の連立一次方程式 AX = B に対する最小自乗解 X' を求める (タイプ 2) 。
 double[] solveSimultaneousLinearEquations(double[] rightHandValues)
          この行列を左辺の一次式の係数 (A) とする連立一次方程式 AX = B を解く。
 JgclMatrix subtract(JgclMatrix mate)
          この行列と他の行列の「差」を表す行列を返す。
 
クラス java.lang.Object から継承したメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

JgclMatrix

public JgclMatrix(int r,
                  int c)
指定された行数/列数を持つオブジェクトを構築する。

すべての要素の値は 0.0 に初期化される。

パラメータ:
r - 行数
c - 列数

JgclMatrix

public JgclMatrix(double[][] values)
実数の二次元配列を与えてオブジェクトを構築する。
パラメータ:
values - 行列の各要素の値を含む二次元配列
メソッドの詳細

getRowSize

public int getRowSize()
この行列の行数を返す。
戻り値:
行数

getColumnSize

public int getColumnSize()
この行列の列数を返す。
戻り値:
列数

setElementsAt

public void setElementsAt(int i,
                          double[] value)
与えられた一次元配列の各要素の値を、この行列の指定の行の各要素に設定する。

elm[i][j] に value[j] を代入する。

パラメータ:
i - 行の番号 (0 ベース)
value - 要素の値を含む一次元配列
例外:
JgclMatrix.MatrixIsLUDecomposed - 行列は LU 分解されているので変更できない

setElementAt

public void setElementAt(int i,
                         int j,
                         double value)
与えられた値を、この行列の指定の行/列の要素に設定する。

elm[i][j] に value を代入する。

パラメータ:
i - 行の番号 (0 ベース)
j - 列の番号 (0 ベース)
value - 要素の値
例外:
JgclMatrix.MatrixIsLUDecomposed - 行列は LU 分解されているので変更できない

getElementAt

public double getElementAt(int i,
                           int j)
この行列の指定の行/列の要素の値を返す。

elm[i][j] の値を返す。

パラメータ:
i - 行の番号 (0 ベース)
j - 列の番号 (0 ベース)
戻り値:
要素の値

copy

public JgclMatrix copy()
この行列の複製を返す。
戻り値:
複製された行列。

clone

public java.lang.Object clone()
この行列の複製を返す。
オーバーライド:
クラス java.lang.Object 内の clone
戻り値:
複製された行列

add

public JgclMatrix add(JgclMatrix mate)
この行列と他の行列の「和」を表す行列を返す。

this と mate の行数と列数はそれぞれ等しくなければならない。 this と mate の行数あるいは列数が異なる場合には JgclInvalidArgumentValue の例外を発生する。

パラメータ:
mate - 和を取る相手の行列
戻り値:
二行列の和 (this + mate)
関連項目:
JgclInvalidArgumentValue

subtract

public JgclMatrix subtract(JgclMatrix mate)
この行列と他の行列の「差」を表す行列を返す。

this と mate の行数と列数はそれぞれ等しくなければならない。 this と mate の行数あるいは列数が異なる場合には JgclInvalidArgumentValue の例外を発生する。

パラメータ:
mate - 差を取る相手の行列
戻り値:
二行列の差 (this - mate)
関連項目:
JgclInvalidArgumentValue

multiply

public JgclMatrix multiply(JgclMatrix mate)
この行列と他の行列の「積」を表す行列を返す。

結果として得られる行列の 行数は this の行数に等しく、 列数は mate の列数に等しい。

this の列数と mate の行数は等しくなければならない。 this と列数と mate の行数が異なる場合には JgclInvalidArgumentValue の例外を発生する。

パラメータ:
mate - 積を取る相手の行列
戻り値:
二行列の積 (this * mate)
関連項目:
JgclInvalidArgumentValue

determinant

public double determinant()
この行列の行列式の値を返す。

この行列が正方行列でない場合には、 MatrixIsNotSquare の例外を発生する。

戻り値:
行列式の値

makeLUDecomposition

public JgclMatrix makeLUDecomposition()
この行列 (N x N 正方行列) を LU 分解した結果を返す。

処理中に this の対角要素に 1.0e-8 よりも小さい値を持つものが見つかった場合には、null を返す。 この 1.0e-8 という値は、 現在はこのクラスの内部で定数として設定されており、 このクラスのソースプログラムを編集しない限り、変更することはできない。

this が既に LU 分解されたものである場合は、this を返す。

this が正方行列でない場合には、 MatrixIsNotSquare の例外を投げる。

戻り値:
LU 分解の結果

solveSimultaneousLinearEquations

public double[] solveSimultaneousLinearEquations(double[] rightHandValues)
この行列を左辺の一次式の係数 (A) とする連立一次方程式 AX = B を解く。

方程式の右辺 (B) は引数として与えられ、解 X を返す。

this (A) は正方行列でなければならない。

this が正方行列でなかったり、逆行列を持たない場合には null を返す

パラメータ:
rightHandValues - 連立方程式の右辺 (B)
戻り値:
連立方程式の解 (X)

solveLinearLeastSquare

public JgclMatrix.LinearLeastSquareSolution solveLinearLeastSquare(double[] rightHandValues)
この行列を左辺の一次式の係数 (A) とする 条件過剰 (未知数の数よりも方程式の数の方が多い) の連立一次方程式 AX = B に対する最小自乗解 X' を求める。

この行列の列数と rightHandValues の要素数が一致しなければ、 JgclInvalidArgumentValue の例外を発生する。

パラメータ:
rightHandValues - 連立方程式の右辺 (B)
戻り値:
連立方程式の最小自乗解 (X')
関連項目:
JgclInvalidArgumentValue, solveLinearLeastSquare2(double[])

solveLinearLeastSquare2

public JgclMatrix.LinearLeastSquareSolution solveLinearLeastSquare2(double[] rightHandValues)
この行列を左辺の一次式の係数 (A) とする 条件過剰 (未知数の数よりも方程式の数の方が多い) の連立一次方程式 AX = B に対する最小自乗解 X' を求める (タイプ 2) 。

この行列の列数と rightHandValues の要素数が一致しなければ、 JgclInvalidArgumentValue の例外を発生する。

このメソッドは、基本的には solveLinearLeastSquare(double[]) と同様の処理を行なうが、行列 A の内容に以下の制限を付けることで、 処理を高速にしたバージョンである。

このメソッドの内部では、 this がこの条件を満たしているものとして処理を進めており、 this がこの条件を満たしていない場合には予期できない結果を招く。

パラメータ:
rightHandValues - 連立方程式の右辺 (B)
戻り値:
連立方程式の解 (X)
関連項目:
JgclInvalidArgumentValue, solveLinearLeastSquare(double[])

main

public static void main(java.lang.String[] argv)
デバッグ用メインプログラム。