倭算数理研究所

科学・数学・学習関連の記事を、「倭マン日記」とは別に書いていくのだ!

commons-math

もしも高校で双曲線関数をやったなら (6) : 双曲線関数の三倍角の公式

双曲線関数の公式を見ていくシリーズ(目次)。 今回は双曲線関数の三倍角の公式を見ていきます。 双曲線関数の三倍角の公式も三角関数の場合と導き方は同様です。正弦 余弦 正接 三角関数の三倍角の公式と、純虚数の引数を使った方が簡単に導けるかも。公式…

commons-math 解読 (19) : ベータ関数 Beta

今回はベータ関数を表す Beta クラスを見ていきます。Beta クラスBeta クラスの定義は以下のようになっています。 どれも関数値を計算する static メソッドです: package org.apache.commons.math.special; public class Beta{ public static double logBet…

commons-math 解読 (18) : ガンマ関数 Gamma

前回に引き続き、今回も org.apache.commons.math.special パッケージのクラスを見ていきます。 今回はガンマ関数を表す Gamma クラス です。Gamma クラスGamma クラスには、以下のような static フィールド、static メソッドが定義されています: package o…

commons-math 解読 (17) : 誤差関数 Erf

今回から何回かにわたって org.apache.commons.math.special に定義されているクラスを見ていきます。 このパッケージにはいくつかの特殊関数 (special functions) が定義されています。 具体的には 誤差関数 (error function) 関連 ガンマ関数 (gamma funct…

commons-math 解読 (16) : 高速アダマール変換 FastHadamardTransformer

今回は高速アダマール変換を見ていきます。 アダマール変換 (Hadamard Transform) は、昔 CPU パワーが充分でなかったときにフーリエ変換がコストのかかる計算だったので、その代替としてよく使われていたそうですが、最近はあまり使われてないみたいですね*…

commons-math 解読 (15) : 高速正弦変換 FastSineTransformer、高速余弦変換 FastCosineTransformer

今回は高速正弦変換、高速余弦変換を見ていきます。実変換 RealTransformer正弦/余弦変換は、フーリエ変換と異なり実関数を実関数へ変換する実変換 (Real Transform) です。 したがって、変換の返り値は double の配列で、引数にとれるのは double の配列も…

commons-math 解読 (14) : 高速フーリエ変換 FastFourierTransformer

今回から何回かにわたって org.apache.commons.math.transform パッケージのクラスを見ていきます。 このパッケージのクラスは、スペクトル解析のようにデータから何らかの信号を取り出すための変換を行います。 実装されている変換は以下の4つ: 高速フーリ…

commons-math 解読 (13) : 複素数 Complex に定義されている複素関数 【多価関数編】

前回に引き続き、今回も Complex クラスに定義されている複素関数を見ていきます。 今回見ていくのは対数関数にはじまる多価関数。 これらはどれも偏角の取り得る値の多価に起因するものですが、角度の範囲を適切に制限することによって(主値をとることによ…

commons-math 解読 (12) : 複素数 Complex に定義されている複素関数 【一価関数編】

前回に引き続き、今回も Complex クラスを見ていきます。 今回扱うのは、Complex クラスに定義されている一価の複素関数。複素関数のメソッド今回見ていく関数: public class Complex{ ... // 指数関数 Complex exp() // 三角関数 Complex sin() Complex co…

commons-math 解読 (11) : 複素数 Complex

今回は複素数を表す Complex クラスを見ていきます。 クラス宣言 インスタンス生成 メソッド 定義済み定数 ちょっと数学を クラス宣言まずは Complex クラスのクラス宣言。 Complex は複素数体の元なので FieldElement インターフェースを実装しています。 …

commons-math 解読 (10) : 分数(有理数) Fraction

今回は分数を表すクラス Fraction を見ていきます。 分数は通常の和演算と積演算で「体」をなすため、Fraction クラスは FieldElement インターフェースを実装します。 また、分数がなす体は有理数体といい commons-math では FractionField で表されます。 …

commons-math 解読 (9) : 実数 BigReal

今回は実数を表すクラス BigReal を見ていきます。BigReal クラスは「実数体*1の要素としての実数」の実装クラスで、前回見た FieldElement インターフェースを実装しています。 このクラスは java.math.BigDecimal クラスに FieldElement インターフェース…

commons-math 解読 (8) : 体 Field, FieldElement

こちらへ移動。

commons-math 解読 (7) : DoubleArray, ResizableDoubleArray

今回はインターフェース DoubleArray とその実装クラス ResizableDoubleArray を見ていきます。「DoubleArray インターフェース」は、基本的には double の配列を表す型ですが、データを扱う際に便利なメソッドが定義されています・・・と言っても、addEleme…

commons-math 解読 (6) : 連分数 ContinuedFraction

今回は連分数を表す org.apache.commons.math.util.ContinuedFraction クラスを見ていきます。連分数連分数の詳細に関してはこちらやwikipedia:連分数などを参照のこと。 後でサンプルに用いるため、1つだけ連分数の具体例を見ておきます(参照): これは書…

commons-math 解読 (5) : MathUtils に定義されている static メソッド〜機械制約編〜

今回は機械制約(造語)に関するメソッドです(一覧)。「機械制約」といって念頭にあるのはメモリのオーバーフローや double の精度に関する処理です。 扱うメソッドは以下の通り: メソッド 返り値の型 説明 addAndCheck(int x, int y)addAndCheck(long a,…

commons-math 解読 (4) : MathUtils に定義されている static メソッド〜幾何学編〜

今回は幾何学的関数(造語)を見ていきます。 幾何学的関数として念頭に置いているのは、「距離」や「角度」に関するものです。 今回扱うメソッドは以下の通り: メソッド 返り値の型 説明 distance1(int p1, int p2)distance1(double p1, double p2) intdou…

commons-math 解読 (3) : MathUtils に定義されている static メソッド〜冪等関数編〜

今回は冪等関数(一覧)。「冪等 (idenpotent)」とは、1度写像を施すとその後何度その写像を施しても値が変わらない性質のこと*1。 数学っぽく書くと、任意の に対して が成り立つ関数 のことです。 射影 (projection) なんかがそういう性質を持ってます。 …

commons-math 解読 (2) : MathUtils に定義されている static メソッド〜指数・対数関数編〜

今回は MathUtils に定義されている static メソッドのうち、指数・対数関数、双曲線関数を見ていきます。 今回見ていくメソッドは下表の通り: メソッド 返り値の型 説明 pow(int k, int e)pow(int k, long e)pow(long k, int e)pow(long k, long e)pow(Big…

commons-math 解読 (1) : MathUtils に定義されている static メソッド〜整数関数編〜

以前から気になっていた「commons-math」の API を気ままにいじっていきます。 当面は、簡単に使える org.apache.commons.math.util.MathUtils に定義されている static メソッドをあれこれ。正直、commons-math を使うコードを Java で書くのは億劫なので、…