jp.go.ipa.jgcl
クラス JgclRealPolynomial

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

public class JgclRealPolynomial
extends java.lang.Object
implements JgclRealFunctionWithOneVariable

変数および各項の係数が実数である多項式を表すクラス。

このクラスは、t を変数とする n 次の多項式 :

	P(t) = A0 + A1 * t + A2 * t^2 + ... + An * t^n
 
を表す。

このクラスのインスタンスは、 多項式の各項の係数 Ai (i = 0, ..., n) の値を含む実数配列 coef を持つ。 coef には、次数の低い項の係数値から先に格納されるものとする。 つまり、coef[i] には i 次の項の係数 Ai の値が格納される。

バージョン:
$Revision: 1.23 $, $Date: 2000/04/26 09:39:22 $
作成者:
Information-technology Promotion Agency, Japan
関連項目:
JgclComplexPolynomial

内部クラスの概要
 class JgclRealPolynomial.NRNotConverge
          ある方程式の根を Newton-Raphson 法によって求めようとした際に、 その収束演算に失敗したことを示す例外の (内部) クラス。
 
コンストラクタの概要
JgclRealPolynomial(double[] coef)
          各項の係数値を含む配列を与えてオブジェクトを構築する。
JgclRealPolynomial(double[][] coef, int dimension)
          各項の係数値を含む二次元配列を与えてオブジェクトを構築する。
JgclRealPolynomial(double coef0, double coef1, double coef2)
          2 次多項式の各項の係数値を与えてオブジェクトを構築する。
 
メソッドの概要
 JgclRealPolynomial add(JgclRealPolynomial mate)
          この多項式と他の多項式の「和」を表す多項式を返す。
 double coefficientAt(int degree)
          この多項式の指定の次数の項の係数の値を返す。
 double[] coefficientsBetween(int lower, int upper)
          この多項式の指定の範囲の次数の項の係数の値を返す。
 int degree()
          この多項式の次数を返す。
 JgclRealPolynomial derive()
          この多項式の一次導関数を表す多項式を返す。
 double evaluate(double parameter)
          この多項式を、与えられたパラメータ値で評価する。
 double[] getAlwaysRootsIfQuadric()
          この多項式を左辺とする二次方程式 (A0 + A1 * t + A2 * t^2 = 0) を解く。
 double getOneRootByNR(double initialGuess)
          この多項式を左辺とする方程式の根を Newton-Raphson 法によって一つだけ求める。
 double[] getRootsIfQuadric()
          この多項式を左辺とする二次方程式 (A0 + A1 * t + A2 * t^2 = 0) を解く。
static void main(java.lang.String[] argv)
          デバッグ用メインプログラム。
 JgclRealPolynomial multiply(double val)
          この多項式に与えられた値をかけた多項式を返す。
 JgclRealPolynomial multiply(JgclRealPolynomial mate)
          この多項式と他の多項式の「積」を表す多項式を返す。
 JgclRealPolynomial normalize()
          この多項式について、絶対値が 0 とみなせる高次の係数を取り除いた多項式を返す。
 JgclRealPolynomial subtract(JgclRealPolynomial mate)
          この多項式と他の多項式の「差」を表す多項式を返す。
 JgclComplexPolynomial toComplexPolynomial()
          この方程式を複素数多項式に変換する。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

JgclRealPolynomial

public JgclRealPolynomial(double[] coef)
各項の係数値を含む配列を与えてオブジェクトを構築する。

coef には、次数の低い項の係数値から先に格納されているものとする。 つまり、coef[i] には i 次の項の係数値が格納されている。

coef が null の場合には JgclInvalidArgumentValue の例外を発生する。 また、coef の要素数が 1 より小さい場合にも JgclInvalidArgumentValue の例外を発生する。

パラメータ:
coef - 多項式の各項の係数値の配列
関連項目:
JgclInvalidArgumentValue

JgclRealPolynomial

public JgclRealPolynomial(double[][] coef,
                          int dimension)
                   throws JgclInvalidArgumentValue
各項の係数値を含む二次元配列を与えてオブジェクトを構築する。

coef[i][j] には j 次元目の多項式の i 次の項の係数の値が格納されているものとする。

dimension で与えられる次元に対応する係数値で多項式を生成する。 つまり、生成される多項式の i 次の項の係数は coef[i][dimension] になる。

coef が null の場合には JgclInvalidArgumentValue の例外を発生する。 また、coef の要素数が 1 より小さい場合にも JgclInvalidArgumentValue の例外を発生する。 さらに、dimension の値が 0 より小さいか、 あるいは (coef[0].length - 1) より大きい場合にも JgclInvalidArgumentValue の例外を発生する。

パラメータ:
coef - 多項式の各項の係数値の二次元配列 [次数][次元]
dimension - 多項式を生成する次元 (0 ベース)

JgclRealPolynomial

public JgclRealPolynomial(double coef0,
                          double coef1,
                          double coef2)
2 次多項式の各項の係数値を与えてオブジェクトを構築する。

このコンストラクタで生成される多項式の次数は必ず 2 次である。

パラメータ:
coef0 - 0 次項の係数値
coef1 - 1 次項の係数値
coef2 - 2 次項の係数値
メソッドの詳細

degree

public int degree()
この多項式の次数を返す。
戻り値:
多項式の次数

coefficientAt

public double coefficientAt(int degree)
この多項式の指定の次数の項の係数の値を返す。

coef[degree] の値を返す。

パラメータ:
degree - 次数
戻り値:
指定の次数の項の係数値

coefficientsBetween

public double[] coefficientsBetween(int lower,
                                    int upper)
この多項式の指定の範囲の次数の項の係数の値を返す。

lower 次から upper 次までの項の係数値を返す。

パラメータ:
lower - 次数の下限
upper - 次数の上限
戻り値:
指定の次数の項の係数値の配列

evaluate

public double evaluate(double parameter)
この多項式を、与えられたパラメータ値で評価する。

与えられたパラメータ値 t におけるこの多項式の値 P(t) を返す。

定義:
インタフェース JgclRealFunctionWithOneVariable 内の evaluate
パラメータ:
parameter - パラメータ値
戻り値:
与えられたパラメータ値で多項式を評価した値

getRootsIfQuadric

public double[] getRootsIfQuadric()
この多項式を左辺とする二次方程式 (A0 + A1 * t + A2 * t^2 = 0) を解く。

この多項式が 2 次でなければ null を返す。

結果として得られる配列は、方程式の実数根を含む。 よって、この配列の長さは 0 ないし 2 である。 実数根が存在しない場合は長さ 0 の配列を返す。

戻り値:
実数根の配列
関連項目:
getAlwaysRootsIfQuadric()

getAlwaysRootsIfQuadric

public double[] getAlwaysRootsIfQuadric()
この多項式を左辺とする二次方程式 (A0 + A1 * t + A2 * t^2 = 0) を解く。

この多項式が 2 次でなければ null を返す。

このメソッドは、 基本的には getRootsIfQuadric() と同じであるが、 方程式が必ず実数解を持っているとみなして解く。 すなわち、判別式が負になることがなく、 coef[2], coef[1] の絶対値がともに 0 にならないものとして方程式を解く。 よって、解の数は必ず 1 ないし 2 となる。

戻り値:
実数根の配列
関連項目:
getRootsIfQuadric()

normalize

public JgclRealPolynomial normalize()
この多項式について、絶対値が 0 とみなせる高次の係数を取り除いた多項式を返す。

このメソッドが返す多項式の各項の係数値は、 その絶対値の最大値が 1 になるように正規化されたものになる。

このメソッドでは、 この多項式の 各項の係数の絶対値の最大値が 1 になるような正規化を行なったときに、 係数の絶対値が JgclMachineEpsilon.DOUBLE より小さくなるような 高次項を取り除く。

この多項式の 各項の係数の絶対値の最大値が JgclMachineEpsilon.DOUBLE より小さい場合には 0 次の項の係数値が 0 の 0 次多項式を返す。 また、 各項の係数の絶対値の最大値を持つのが 0 次の項で、 他のすべての項の係数値 Ai が ((|Ai| / |A0|) < JgclMachineEpsilon.DOUBLE) である場合にも 0 次の項の係数値が 0 の 0 次多項式を返す。

戻り値:
絶対値が 0 とみなせる高次の係数を取り除いた多項式
関連項目:
JgclMachineEpsilon.DOUBLE

add

public JgclRealPolynomial add(JgclRealPolynomial mate)
この多項式と他の多項式の「和」を表す多項式を返す。

この多項式 P(t) と他の多項式 Q(t) の和 P(t) + Q(t) を返す。

パラメータ:
mate - 他の多項式
戻り値:
(this + mate)

subtract

public JgclRealPolynomial subtract(JgclRealPolynomial mate)
この多項式と他の多項式の「差」を表す多項式を返す。

この多項式 P(t) と他の多項式 Q(t) の差 P(t) - Q(t) を返す。

パラメータ:
mate - 他の多項式
戻り値:
(this - mate)

multiply

public JgclRealPolynomial multiply(double val)
この多項式に与えられた値をかけた多項式を返す。

この多項式 P(t) に val をかけた多項式 val * P(t) を返す。

パラメータ:
val - 多項式の各項の係数にかける値
戻り値:
(this * val)

multiply

public JgclRealPolynomial multiply(JgclRealPolynomial mate)
この多項式と他の多項式の「積」を表す多項式を返す。

この多項式 P(t) と他の多項式 Q(t) の積 P(t) * Q(t) を返す。

パラメータ:
mate - 他の多項式
戻り値:
(this * mate)

derive

public JgclRealPolynomial derive()
この多項式の一次導関数を表す多項式を返す。

この多項式の次数が 0 の場合には、 0 次の項の係数値が 0 である 0 次多項式を返す。

戻り値:
一次導関数を表す多項式

getOneRootByNR

public double getOneRootByNR(double initialGuess)
                      throws JgclRealPolynomial.NRNotConverge
この多項式を左辺とする方程式の根を Newton-Raphson 法によって一つだけ求める。
パラメータ:
initialGuess - 方程式の根の初期値
戻り値:
根の収束値
例外:
JgclRealPolynomial.NRNotConverge - 演算が収束しなかった

toComplexPolynomial

public JgclComplexPolynomial toComplexPolynomial()
この方程式を複素数多項式に変換する。

結果として得られる複素数多項式の各項の係数の虚数部の値は 0 である。

戻り値:
複素数多項式

main

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