CRAN Task View: Numerical Mathematicsの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載した。

Maintainer: Hans W. Borchers
Contact: hwborchers at googlemail.com
Version: 2016-11-01

数値数学のこのタスクビューには、線形代数や解析における数値的な問題を解決するための便利なRパッケージと機能の一覧を作る。これは、Rが実装し、また統計の領域外で、数値計算法を適用するための実行可能なコンピューティング環境であることを示している。

このタスクビューには、微分方程式、最適化問題やソルバー、または時系列で動作するパッケージと機能をカバーしていません。なぜならば、すべてのこれらのトピックは、対応するタスクビューのDifferentialEquationsOptimization、およびTimeSeriesで広く扱われるからである。これらのすべてのタスクビューは一緒に、数値数学の領域についてRで利用可能なものの良い選択を提供します。

並列コンピューティングのための多くのリンクを持つHighPerformanceComputingタスクビューには、対象となり得る。

タスクビューは、トピックの概要を提供するために作成されています。いくつかのパッケージが見つからないか、数値数学の特定のトピックをより詳細に扱われるべきである場合は、メンテナに知らせてください。

数値線形代数

統計は線形代数に大きく基づいている、多くの数値線形代数ルーチンは、一部のみを暗黙のうちにR中に存在している。明示的に使用可能な機能の例には、ベクトルおよび行列演算、行列(QR)分解、線形方程式、固有値/ベクトル、特異値分解、又は最小二乗近似を解くことである。

  • 推奨されるパッケージMatrixは、例えばCholeskyとSchr分解、指数関数行列、スパース行列のためのノルムと条件数、それらの上に緻密で、スパース行列や操作のためのクラスとメソッドを提供している。
  • 推奨パッケージのMASSは(ペンローズ)逆数と行列の零空間を一般化し追加します。
  • expmは、指数関数、対数関数、および正方行列の平方根でなく、行列のベキやフレシェ導関数を計算します。expm()は、Matrix内の同じ名前の関数が好まれるべきである。
  • SparseMは、スパース行列のスパース線形代数の線形最小二乗問題を解決するためのクラスとメソッドが用意されています。
  • パッケージrmumps は、MUMPSライブラリのラッパーを提供し、並列スパースダイレクトソルバを適用する大規模な線形方程式系を解きます。
  • svdは特異値分解(SVD)の最先端の実装と固有値/固有ベクトルの計算にRバインディングを提供します。irlbaは大きな行列のおおよその特異値/ベクトルを計算する一方、パッケージssvdは、反復的な閾値処理法を用いて、スパースのSVDを得ることができます。
  • パッケージgeigenQZは、QZ分解(シューアを一般化)、行列のペアの一般化固有値とベクトルを計算する。
  • eigeninvは固有値(逆固有値問題)の与えられたセットで行列を生成します。
  • ARPACKライブラリのラッパーのパッケージrARPACK、は、一般的には数の固有値/ベクトルを計算するために使用されます。例えば、最大の固有値の数が少ない。
  • パッケージRSpectra は、大規模な固有値分解とSVD問題のための「Spectra」ライブラリをインターフェースします。
  • optRは線形システムを解くための線形代数の初等方法(ガウス、LU、CGM、コレスキー)を使用しています。
  • matrixcalc は、行列プロパティすなわち(半)正定性の行列計算、特別な行列、およびテストのための関数のコレクションが含まれています。
  • パッケージのonionは、四元数とoctonians(実数上でノルム分割代数)を操作するためのルーチンが含まれています。四元数は、三次元空間内での回転を処理するために有用であり得る。
  • パッケージRcppArmadilloRcppEigenは、C++テンプレートライブラリ「アルマジロ」RESPの統合を可能にする。C++で書かれた線形代数アプリケーションのための「固有値」、パフォーマンスと使いやすさのためのRcppを使用してRに統合。

特別な機能

多くの特別な数学関数は、特に対数や指数関数、三角関数や双曲線関数、またはベッセルおよびガンマ関数の研究に存在している。より多くの特別な機能は貢献パッケージで提供されています。

  • パッケージgslは、例えばエアリーとベッセル関数、楕円、指数積分、超幾何関数、ランベルトのW機能などの多くの特殊関数の実装が含まれている「GNU科学ライブラリー」へのインターフェースを提供している。
  • エアリーとベッセル関数は、実数と複素数のために、また、大規模な引数の近似値で、パッケージBesselで計算される。
  • パッケージpracmaは、誤差関数とその逆のような特別な機能、不完全で、複雑なガンマ関数、指数関数、対数積分、フレネル積分、ポリガンマとリーマンのゼータ関数が含まれています。
  • appellは、かなり正確に複雑なパラメータや引数のガウスの2F1やAPPELLのF1の超幾何関数を計算します。
  • 超幾何(および一般化超幾何)関数は、変換式やパラメータの特別な値を含む、hypergeoで計算される。
  • 楕円モジュラー関数は、ワイエルシュトラスのP関数とヤコビのテータ関数を含む、パッケージellipticで提供されています。複雑な機能を視覚化するためのツールがあります。
  • パッケージlamWは(Rcpp使用する)ランベルトのW関数の両方の実数値のブランチを実装しています。

多項式

ベースRの関数polyroot()は、Jenkins-Traubのアルゴリズムに基づいて、多項式のすべてのゼロを決定する。モデル式(with option row = TRUE)で、poly()を使用するときに線形回帰関数lm()は、多項式フィッティングを実行することができる。

  • パッケージpolynomPolynomFは、多項式を解く、すなわち、すべての根を見つける(固有値計算に基づく)、微分や積分、多項式(ホーナースキーム)の値を求めるような単変量多項式を操作するための同様の機能を提供します。
  • パッケージMonoPolyは異なるアルゴリズムを適用し、与えられたデータに変数多項式にフィットする。
  • 多変数多項式の場合、パッケージmultipol、いくつかの変数のこれらの多項式を操作し、組み合わせて様々なツールが用意されています。
  • パッケージmpolyは多次多変数の基本的な微分計算操作を含む多項式、さらにいくつかのグレブナ基底計算のシンボリックな操作を容易にします。
  • パッケージorthopolynomはチェビシェフ、エルミート、およびルジャンドル多項式だけでなく、球状や超球の多項式中でも直交多項式とその再発の関係を構築するための関数の集まりで構成されています。これらの多項式を操作する関数があります。

微分と積分

ベースRのD()とderiv()は記号的単純な式の導関数を計算する。この関数integrate()は数値的にRに一変量の関数を積分するためのアプローチを実装しています。それは、適応ガウス・クロン求積を適用し、ある程度の特異点と無制限の定義域を扱うことができます。

  • パッケージDerivはRでのシンボリック分化の拡張ソリューションを提供します。ユーザーは、カスタム派生ルールを追加することができますし、関数の出力には、再度実行機能になります。
  • numDerivは、数値の単純な有限差分によって計算された勾配、ヤコビアン、とヘッセ行列、リチャードソン補外、または高精度の複雑なステップのアプローチを提供し、Rでの数値微分の標準を確立します。
  • パッケージpracmaはリチャードソンの補外や複雑な工程を含む数値微分を計算するための関数が含まれています。Fderiv()は高次の数値微分を計算します。pracmaは数値積分のためのいくつかのルーチンがあります。適応型のLobatto求積、ロンバーグ積分、ニュートン・コーツの公式、クレンショウ・カーチス直交ルール。integral2()は、極座標で、または可変間隔の制限による特徴付け定義域に対しても、2次元の関数を積分します。
  • パッケージgaussquadはその中チェビシェフ、エルミート、ラゲール、およびルジャンドル直交ルールは、明示的にそれぞれの場合に、ノードと重みを返す、ガウス求積を実行するための関数のコレクションが含まれています。パッケージstatmodの関数gaussquad()は、同じような仕事をしていません。
  • パッケージfastGHQuadは、高速Rcppは(適応)ガウス-エルミート求積の実装をベース用意されています。
  • n次元空間の超長方形にAdaptive多変量の積分は、スティーブン・ジョンソンによるCコードに基づいて、関数adaptIntegrate()などのパッケージcubatureで提供されています。被積分関数があっても複数の値を持つことができます。
  • 多次元数値積分はまた、パッケージR2Cuba、CライブラリCubaのラッパーで覆われている。vegas()でそれは重要度サンプリングに基づいてモンテカルロ積分へのアプローチが含まれています。
  • mvQuadは、多変量の統合のために使用することができる多変量グリッドを生成するための方法を提供します。 これらのグリッドは、ニュートン・コーツまたはガウス求積公式のような異なる直交ルールに基づいて行われます。
  • パッケージSparseGridは高次元空間における多変量統合に別のアプローチを提供します。なお、直交ルールと同様に使用することができる疎なn次元のグリッドを作成する。
  • パッケージSphericalCubatureは、n次元空間の単位球と球上の機能を統合するためのcubatureを採用する。SimplicialCubatureは、n次元空間内のm次元単体オーバー機能を統合するための方法を提供する。両方のパッケージには、多項式の正確な方法を含む。
  • パッケージpolyCubは2次元の多角形のドメイン上の数値積分のためのいくつかのルーチンを保持します。
  • パッケージPadeは十分な長さのテイラー級数係数を与えられたパデ近似の分子と分母の係数を算出します。
  • madness は、前方に分化し、チェーン・ルールを経由して、行列演算によって定義された多変量関数の導関数を計算することができます。
  • RootsExtremaInflectionsは離散点によって定義される曲線の根、極値と変曲点を見つけながら、featuresは、第1及び第2の誘導体、又は臨界点での曲率のような機能データから特徴を抽出する。

補間と近似

smooth.spline()は、立方スプライン近似を行っている間、ベースRは、立方(エルミート)スプライン補間のためのspline()と定数と線形補間のための関数approx()を提供している。基本パッケージスプラインは関数periodicSpline()に定期的な補間スプラインを作成します。

  • 不規則な間隔データの補間は、akimaパッケージで可能です。単変量データのためのaspline()、2D矩形領域のデータのためのbicubic()またはinterp()。(このパッケージは商業用途に使用できていないACMのライセンスとの下で配布されています。)
  • パッケージsignalは、線形、スプライン、およびキュービック補間、特にinterp1()は、区分的キュービックエルミート補間のためのpchip()、およびサビツキー・ゴーレイ平滑用sgolay()を離散データを滑らかにするためにいくつかのフィルタが含まれています。
  • パッケージpracmaは、barylag()、resp.barylag2d()、akimaInterp()の1-dim.akima、および有理関数とのデータの近似と補間、すなわちratinterp()とrationalfit()で特異点の存在下で、重心ラグランジュ補間(1および2次元で)を提供します。
  • パッケージstinepackのsinterp()はStinemanのアルゴリズムを適用することにより、区分有理関数による補間を実現している。補間関数は、指定された点が単調に変化する領域で単調されます。
  • パッケージschumaker のschumacher()は、単調で安定した形を保つ形状保持スプラインを実装しています。 データが単調、凹、または凸である場合には凹または凸である。
  • パッケージconicfit は、一般的にはフィッティング円、楕円、および円錐曲線のためのいくつかの(幾何と代数)アルゴリズムを提供しています。

ルートの検索

ブレント・デッカーのアルゴリズムを実装するuniroot()は、単変量の関数の根を見つけるための研究における基本的なルーチンです。二分法の実装では、いくつかの貢献のパッケージにあります。より精度の高いルート求める関数unirootR()はマルチ精度パッケージRmpfrにあります。多変量の関数の根を見つけるためには、以下の2つのパッケージを参照してください。

  • 方程式の非線形システムを解くためのBBパッケージには、感応度分析でマルチスタート機能とdfsane()で導関数のない派生型を含むsane()の(非単調)Barzilai-Borweinスペクトル法を提供します。
  • パッケージnleqslvは、行を検索したり、信頼領域のような戦略によってサポートされ、代替的Broydenやニュートン法を用いて方程式の非線形システムを解決します。
  • ktsolveはBBまたはnleqslvで方程式を解くための共通インタフェースを定義しています。

離散数学と数論

そうでなく、多くの機能は、計算数論のために用意されています。倍精度の整数がちょうど2^53-1まで表現することができることに注意してください。gmpが必要とされるようなマルチ精度パッケージの限界を超えるならば、下記を参照してください。

  • パッケージnumbersは因数分解、素数、双子素数、原始根、モジュラーインバース、拡張GCDなどのための機能を提供します。除数関数やオイラーのファイ関数のようないくつかの数論的関数が含まれている。
  • contfracは連分数と部分分数を評価するための様々なユーティリティが含まれています。
  • partitionsパッケージには、制限された等しくない分割を含む整数の加法分割を列挙します。
  • permutations は、有限集合の可逆機能として順列を扱い、それらにいくつかの数学的な操作が含まれています。
  • パッケージcombinatは、要素(例えばベクトル)の集合の特定の長さの全ての順列または全ての組み合わせを生成する。それはまた、二項係数を計算します。
  • magicは、魔法の正方形を作成し調査する。

マルチ倍精度演算とシンボリック数学

  • 複数の精度演算は、GMP Cライブラリへのインタフェース、パッケージgmpからRで提供されています。例としては、整数の因数分解、確率的素数テスト、またはビッグ有理数上での操作である方程式の線形システムを解くことができるため。
  • 複数の単精度浮動小数点演算や関数をMPFRとGMPライブラリを使用してRmpfrパッケージを介して提供されます。特別な数字といくつかの特別な機能は、同様に、任意の精度でのルート検索、統合、最適化のためのルーチンとして、含まれています。
  • Brobdingnagは、その対数プラスその符号を示すフラグを保持することによって、非常に大きな数を処理します。(優れたビネットは、これはS4メソッドを使用して行われている方法について説明します。)
  • パッケージrSymPyはRから(Pythonで書かれた)記号代数システム「SymPy」をアクセスします。これは、任意精度の計算、線形代数や微積分、解く方程式、離散数学、および大いに多くをサポートしています。
  • パッケージRyacasはコンピュータ代数システム「Yacas」をインターフェースする。それは、微積分と線形代数でシンボリックと任意精度演算をサポートしています。

MATLAB、オクターブ、およびPythonインターフェース

困難な数値的な問題を解決する際に、MATLAB(商用)またはOctave(無料)のような数値計算ソフトウェアへのインタフェースが重要になります。商用プログラムSASとMathematicaはR関数を呼び出すためのの設備を持っていますのでご注意ください。

  • matlabはそれぞれのMATLABの名前を使用して、純粋なRに実装されているMATLAB関数を複製、エミュレーションパッケージは約30の単純な関数、が含まれています。
  • パッケージR.matlabは、MATLABのデータフォーマットである、MATファイルを読み書きするためのツールが用意されています。また、TCP/IP接続を介してオブジェクトの送信および取得、MATLABプロセスを一方向のインターフェイスを可能にします。
  • パッケージRcppOctaveは、Octave(MATLABのクローン)へのインタフェースを提供します。これは、オクターブ関数の呼び出し、Rとオクターブの間で変数を渡すと、オクターブのドキュメントを閲覧することができます。
  • Pythonは、そのモジュール「numpy」、「SciPy」、および「pandas」を通じて、利用可能な精巧かつ効率的な数値ツールを備えています。プロジェクトRPy(Pythonのモジュール「rpy2」付き)はPythonからRへのインターフェースを接続しながら、RパッケージのrPythonは、RからのPythonへの呼び出しを許可します。
  • 「pyRserve」は、RPCゲートウェイとしてRserveを実行しているRプロセスにPythonを接続するためのPythonモジュールです。リモートマシン上で実行することができ、このRプロセスは、変数アクセス関数呼び出しは、ネットワークを介して委任されます。
R言語 CRAN Task View:数値解析

One thought on “R言語 CRAN Task View:数値解析

Comments are closed.