jp.go.ipa.jgcl
クラス JgclComplexPolynomial

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

public class JgclComplexPolynomial
extends java.lang.Object
implements JgclComplexFunctionWithOneVariable

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

このクラスは、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.21 $, $Date: 2000/08/11 06:18:45 $
作成者:
Information-technology Promotion Agency, Japan

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

コンストラクタの詳細

JgclComplexPolynomial

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

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

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

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

JgclComplexPolynomial

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

各項の係数の虚数部はすべて 0 であるものとする。

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

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

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

JgclComplexPolynomial

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

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

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

degree

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

coefficientAt

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

coef[degree] の値を返す。

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

coefficientsBetween

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

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

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

evaluate

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

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

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

getRootsIfQuadric

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

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

結果として得られる配列は、方程式の根を含む。 よって、この配列の長さは常に 2 である。

coef[2], coef[1] の絶対値がともに JgclMachineEpsilon.DOUBLE 以下である場合には、 方程式の根として (Double.NaN, 0.0) を返す。

戻り値:
根の配列
関連項目:
JgclMachineEpsilon.DOUBLE

normalize

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

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

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

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

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

add

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

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

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

subtract

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

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

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

multiply

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

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

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

multiply

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

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

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

derive

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

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

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

getOneRootByNR

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

getRootsByDKA

public JgclComplex[] getRootsByDKA()
                            throws JgclComplexPolynomial.DKANotConverge,
                                   JgclComplexPolynomial.IndefiniteEquation,
                                   JgclComplexPolynomial.ImpossibleEquation
この多項式を左辺とする方程式の根のすべてを Durand-Kerner 法によって求める。
戻り値:
根の配列
例外:
JgclComplexPolynomial.DKANotConverge - 演算が収束しなかった
JgclComplexPolynomial.IndefiniteEquation - 方程式が不定である
JgclComplexPolynomial.ImpossibleEquation - 方程式が不能である

main

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