犬ぶよツールズ制作記録

Javaによる研究生活のためのパッケージ、犬ぶよツールズ。
その開発と保守のための備忘録

多項式のライブラリ (jp.inubuyo.brain.num.func.polynomialパッケージ)

2013-04-11 14:10:20 | Weblog

● 概要

浮動小数点型の係数を持つ多項式を扱うパッケージです。

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に収められます。

 


最新の画像もっと見る