● 概要
浮動小数点型の係数を持つ多項式を扱うパッケージです。
n変数多項式はn変数関数と見做します。
k<nについて、k変数多項式Pは、n変数多項式であると見做します。
多項式の定数倍、微分、定積分、多項式同士の和・積・冪・代入のアルゴリズムを提供します。
● n変数関数としてのn変数多項式
多項式を表す抽象クラスはPolynomialRntoR, PolynomialR2toR, PolynomialRtoRです。
それぞれ、n変数、2変数、1変数の多項式を表します。
変数が少ない方が多い方のクラスを継承することで、任意の多項式がそれより変数が多い多項式と同一視されます。
これらのクラスは対応するインターフェースDifferentiableR*toR, IntegratableR*toRを実装することで微積分の可能な実関数として扱われます。
● 単項式への分解
多項式は単項式に分解されます。単項式への分解は、多項式の変数の数をいくつと見做すかに依らず決まります。
そこで、抽象クラスPolynomialRntoRは単項式への分解のメソッドtoMonomials()を持ちます。
これを使って、積や代入などを実装します。単項式は抽象クラスとしていくつがのアルゴリズムを提供します。
このとき、例えば、2変数単項式MonomialR2toRの親クラスを、2変数多項式PolynomialR2toRにするか、n変数単項式MonomialRntoRにするか、2つの方針がありえます。
このライブラリの場合は、クラスMonomialR2toRは2変数多項式PolynomialR2toRの計算の実装に使うので、こちらを継承します。
一方で、単項式への分解のメソッドtoMonomials()の戻り値型が、MonomialRntoR.toMonomials()とMonomialR2toR.toMonomials()で整合的でなければなりません。そこで、単項式を表すインターフェースMonomialを用意し、toMonomials()の戻り値型はその配列Monomial[]とします。
クラスMonomialR*toRはインターフェースMonomialを実装します。
● まとめ
以上のクラス構造を中心に、多項式の計算アルゴリズムを提供します。
関連するクラスはパッケージjp.inubuyo.brain.num.func.polynomialに収められます。