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

Maintainer: Hans W. Borchers
Contact: hwborchers at googlemail.com
Version: 2019-06-02
URL: https://CRAN.R-project.org/view=NumericalMathematics

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

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

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

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

数値線形代数

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

  • 推奨されるパッケージMatrixは、例えばCholeskyとSchr分解、指数関数行列、スパース行列のためのノルムと条件数、それらの上に緻密で、スパース行列や操作のためのクラスとメソッドを提供している。
  • 推奨パッケージのMASSは、(ペンローズ)逆数と行列の零空間を一般化し追加します。
  • expmは、指数関数、対数関数、および正方行列の平方根でなく、行列のベキやフレシェ導関数を計算します。expm()は、Matrix内の同じ名前の関数が好まれるべきである。
  • SparseMは、スパース行列のスパース線形代数の線形最小二乗問題を解決するためのクラスとメソッドが用意されています。
  • パッケージrmumpsは、MUMPSライブラリのラッパーを提供し、並列スパースダイレクトソルバを適用する大規模な線形方程式系を解きます。
  • Rlinsolveは、疎線形連立方程式の反復ソルバの集合です。JacobiやGauss-Seidelのような定常的な反復ソルバと、非定常(Krylov部分空間)法が用意されています。
  • svdは、特異値分解(SVD)の最先端の実装と固有値/固有ベクトルの計算にRバインディングを提供します。irlbaは大きな行列のおおよその特異値/ベクトルを計算する一方、パッケージssvdは、反復的な閾値処理法を用いて、スパースのSVDを得ることができます。
  • パッケージPRIMMEは、実対称または複素エルミート行列の固有値および対応する固有ベクトルを計算するためのCライブラリPRIMMEをインタフェースします。最大値、最小値、または内部固有値/特異値を見つけることができ、収束を早めるために前処理を適用します。
  • パッケージ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は、誤差関数とその逆のような特別な機能、不完全で、複雑なガンマ関数、指数関数、対数積分、フレネル積分、ポリガンマとリーマンのゼータ関数が含まれています。
  • 超幾何(および一般化超幾何)関数は、変換式やパラメータの特別な値を含む、hypergeoで計算される。
  • 楕円モジュラー関数は、ワイエルシュトラスのP関数とヤコビのテータ関数を含む、パッケージellipticで提供されています。複雑な機能を視覚化するためのツールがあります。
  • パッケージexpintは、C関数をGNU Scientific Libraryからラップして、指数積分と、最初の引数の負の値を含む不完全なガンマ関数を計算します。
  • fourierinは、高速フーリエ変換を使用して1つおよび2つの変数の関数のフーリエ積分を計算します。
  • logOfGammaは、近似値を使用して、大きな値のガンマ関数の自然対数を計算します。
  • パッケージlamWは、(Rcpp使用する)ランベルトのW関数の両方の実数値のブランチを実装しています。

多項式

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

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

微分と積分

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

  • パッケージDerivは、Rでのシンボリック分化の拡張ソリューションを提供します。ユーザーは、カスタム派生ルールを追加することができますし、関数の出力には、再度実行機能になります。
  • numDerivは、数値の単純な有限差分によって計算された勾配、ヤコビアン、とヘッセ行列、リチャードソン補外、または高精度の複雑なステップのアプローチを提供し、Rでの数値微分の標準を確立します。
  • パッケージautodiffr (Github上)は、ネイティブR関数の自動微分を行うJuliaパッケージForwardDiff.jlとReverseDiff.jlのRラッパーを提供します。(Julia v0.6でのみ動作します)
  • パッケージpracmaは、リチャードソンの補外や複雑な工程を含む数値微分を計算するための関数が含まれています。Fderiv()は高次の数値微分を計算します。pracmaは数値積分のためのいくつかのルーチンがあります。適応型のLobatto求積、ロンバーグ積分、ニュートン・コーツの公式、クレンショウ・カーチス直交ルール。integral2()は、極座標で、または可変間隔の制限による特徴付け定義域に対しても、2次元の関数を積分します。
  • パッケージgaussquadは、その中チェビシェフ、エルミート、ラゲール、およびルジャンドル直交ルールは、明示的にそれぞれの場合に、ノードと重みを返す、ガウス求積を実行するための関数のコレクションが含まれています。パッケージstatmodの関数gaussquad()は、同じような仕事をしていません。
  • パッケージfastGHQuadは、高速Rcppは(適応)ガウス-エルミート求積の実装をベース用意されています。
  • n次元空間の超長方形にAdaptive多変量の積分は、スティーブン・ジョンソンによるCコードに基づいて、関数adaptIntegrate()などのパッケージcubatureで提供されています。被積分関数があっても複数の値を持つことができます。
  • vegas()でそれは重要度サンプリングに基づいてモンテカルロ積分へのアプローチが含まれています。
  • mvQuadは、多変量の統合のために使用することができる多変量グリッドを生成するための方法を提供します。これらのグリッドは、ニュートン・コーツまたはガウス求積公式のような異なる直交ルールに基づいて行われます。
  • パッケージSparseGridは、高次元空間における多変量統合に別のアプローチを提供します。なお、直交ルールと同様に使用することができる疎なn次元のグリッドを作成します。
  • パッケージSphericalCubatureは、n次元空間の単位球と球上の機能を統合するためのcubatureを採用します。SimplicialCubatureは、n次元空間内のm次元単体オーバー機能を統合するための方法を提供します。両方のパッケージには、多項式の正確な方法を含みます。
  • パッケージpolyCubは、2次元の多角形のドメイン上の数値積分のためのいくつかのルーチンを保持します。
  • パッケージPadeは、十分な長さのテイラー級数係数を与えられたパデ近似の分子と分母の係数を算出します。
  • 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次元で)を提供します。
  • interpパッケージは、線形またはスプラインを使用して、規則的および不規則なグリッド上で二変量データ補間を行います。現在、区分線形補間部が実装されています。(これは、ACMのライセンスを受けたakima :: interpとtripack :: tri.mesh関数を無料で置き換えることを目的としています。)
  • chebpolパッケージは、多変量チェビシェフ(Chebyshev)とマルチグリル補間を作成するためのメソッドが含まれています。Floater-Hormann重心法、または散乱データ用の多項式スプラインを使用します。
  • 不規則に間隔を置いたデータの三角測量のためのtripackは、不規則な間隔のデータの三角測量とボロノイモザイクの生成の両方を提供する拘束された二次元Delaunay三角測量パッケージです。
  • パッケージstinepackのsinterp()はStinemanのアルゴリズムを適用することにより、区分有理関数による補間を実現しています。補間関数は、指定された点が単調に変化する領域で単調されます。
  • パッケージschumakerのschumacher()は、単調で安定した形を保つ形状保持スプラインを実装しています。データが単調、凹、または凸である場合には凹または凸です。
  • ADPFは、Savitzky-Golay平滑化を改善するために、最小二乗多項式回帰と統計的検定を使用します。
  • パッケージconicfitは、一般的にはフィッティング円、楕円、および円錐曲線のためのいくつかの(幾何と代数)アルゴリズムを提供しています。

ルートの検索と固定小数点

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

  • パッケージrootSolveは、非線形(および線形)方程式系の根を見つけるための関数multiroot()が含まれています。それはまた、(二次ゼロを除いて)インターバル内の一変量関数のすべてのゼロを見つけようと試みる拡張uniroot.all()を含みます。
  • 方程式の非線形システムを解くためのBBパッケージには、感応度分析でマルチスタート機能とdfsane()で導関数のない派生型を含むsane()の(非単調)Barzilai-Borweinスペクトル法を提供します。
  • パッケージnleqslvは、行を検索したり、信頼領域のような戦略によってサポートされ、代替的Broydenやニュートン法を用いて方程式の非線形システムを解決します。
  • ktsolveは、BBまたはnleqslvで方程式を解くための共通インタフェースを定義しています。
  • パッケージFixedPointは、固定小数点ベクトルを見つけるアルゴリズムを提供します。これらのアルゴリズムには、Andersonアクセラレーション、イプシロン外挿方法、および最小多項式法が含まれます。

離散数学と数論

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

  • パッケージnumbersは、因数分解、素数、双子素数、原始根、モジュラーインバース、拡張GCDなどのための機能を提供します。除数関数やオイラーのファイ関数のようないくつかの数論的関数が含まれています。
  • contfracは、連分数と部分分数を評価するための様々なユーティリティが含まれています。
  • magicは、任意の次元の配列の操作と解析のための関数を含む、魔法の四角形とハイパーキューブを作成し、調査します。
  • パッケージfreegroupは、並置、反転、スカラーによる乗算、パワー演算、およびTietzeフォームを含む自由グループの要素を操作するための機能を提供します。
  • partitionsパッケージは、制限された等しくない分割を含む整数の加法分割を列挙します。
  • permutationsは、有限集合の可逆機能として順列を扱い、それらにいくつかの数学的な操作が含まれています。
  • パッケージcombinatは、要素(例えばベクトル)の集合の特定の長さの全ての順列または全ての組み合わせを生成する。それはまた、二項係数を計算します。
  • パッケージarrangementsは、順列、組み合わせ、およびパーティション用のジェネレータとイテレータを提供します。イテレータは、ユーザが迅速かつメモリ効率の良い方法でアレンジメントを生成することを可能にします。順列と組み合わせは、置換の有無にかかわらず描画でき、マルチセットをサポートします。
  • RcppAlgosは、制約の有無にかかわらず、ベクトルのすべての組み合わせまたは置換を生成する最適化された関数を提供します。
    • 拡張パッケージbigIntegerAlgosは、大きな整数を完全に因数分解するための2次シーブアルゴリズムを備えています。
  • パッケージZseqは、よく知られている整数シーケンスを生成します。任意の数の計算には「gmp」パッケージが採用されています。すべての機能は、そのヘルプページ上で、整数シーケンスのオンライン百科事典(OEIS)の対応するエントリへのハイパーリンクを持っています。

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

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

Pythonインタフェース

Pythonは、モジュール「NumPy」、「SciPy」、「Matplotlib」、「SymPy」、「pandas」を使用して、手の込んだ、効率的な数値とグラフィックツールを利用できます。

  • reticulateは、Pythonモジュール、クラス、関数へのRインタフェースです。PythonをRで呼び出すと、データ型は自動的に同等のPython型に変換されます。値がPythonからRに返されると、それらはR型に変換されます。RStudioチームのこのパッケージはRからPythonを呼び出すための一種の標準です。
  • RパッケージrPythonは、RからPythonへの呼び出しを許可しますが、RPy(Pythonモジュール ‘rpy2’で)はPythonからRをインタフェースします。SnakeCharmRは、いくつかの修正と改良を加えた ‘rPython’のフォークです。
  • PythonInRは、Rの中からPythonと対話するためのもう一つのパッケージです。RからPythonに簡単に変換できるvector、matrices、data.framesのPythonクラスを提供します。
  • featherは、最高速度を目指して設計された軽量バイナリ・データ・ストアであるフェザー・ファイルの読み取りと書き込みのバインディングを提供します。この記憶形式は、Python、Julia、またはScalaでアクセスすることもできます。
  • findpythonは、最小バージョンまたは必要なモジュールを含む、許容されるPythonバイナリをパスで見つけるために設計されたパッケージです。
  • ‘pyRserve’は、RserveをRPCゲートウェイとして実行しているRプロセスにPythonを接続するためのPythonモジュールです。このRプロセスはリモートマシン上で実行でき、可変アクセスとファンクションコールはネットワークを介して委任されます。
  • XRPython(と「XRJulia」)は、John ChambersのXRパッケージと彼の書籍「Extending R」に基づいており、RとPython respの非常に構造化された統合を可能にします。
  • SageMathは、Pythonをベースとしたオープンソースの数学システムで、R関数を実行できるだけでなく、Maxima、GAP、FLINTなどの数学プログラムへのアクセスを提供します。SageMathは、Webインターフェイス(CoCalc)を通じてダウンロードまたは使用できます。

MATLABOctaveJulia、その他インターフェース

困難な数値問題を解決するには、MATLAB(商用)やOctave(無料)などの数値計算ソフトウェアとのインターフェースが重要です。

  • matlabは、それぞれのMATLABの名前を使用して、純粋なRに実装されているMATLAB関数を複製、エミュレーションパッケージは約30の単純な関数、が含まれています。
  • パッケージR.matlabは、MATLABのデータフォーマットである、MATファイルを読み書きするためのツールが用意されています。また、TCP/IP接続を介してオブジェクトの送信および取得、MATLABプロセスを一方向のインターフェイスを可能にします。

Juliaは、「数値計算のための高水準の高性能動的プログラミング言語」であり、最適化問題やRの科学計算を面白くすることができます。

  • John ChambersによるXRJuliaパッケージのJuliaインタフェースは、Julia関数呼び出しに直接的に類似しています。「juliaExamples」パッケージはGithubで利用できます。
  • JuliaCallは、RとJuliaのシームレスな統合を実現します。高水準のインタフェースを使用すると、ユーザは、自動的な型変換を伴うR関数のような任意のJulia関数を呼び出すことができます。低レベルのインターフェイスで、ユーザはジュリアのような高水準のプログラミング言語を使用する利便性を享受しながら、CレベルのSEXPと直接インターフェイスします。

商用プログラムSASとMathematicaにはR関数を呼び出す機能があります。Rから呼び出せる純粋数学の別のコンピュータ代数システム(CAS)があります。

  • m2rパッケージは、Macauley2に永続的なインターフェイスを提供します。Macauley2は、代数幾何学および代数代数の研究をサポートする拡張ソフトウェアプログラムです。Macauley2は独立してインストールする必要があります。そうしないと、クラウド内のMacauley2プロセスがインスタンス化されます。

関連する記事

  • R言語 CRAN Task View:欠損データR言語 CRAN Task View:欠損データ CRAN Task View: Missing Dataの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Maintainer: Julie Josse, Nicholas Tierney and Nathalie Vialaneix (r-miss-tastic […]
  • R言語 CRAN Task View:極値解析R言語 CRAN Task View:極値解析 CRAN Task View: Extreme Value Analysisの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載した。 Maintainer: Christophe Dutang, Kevin Jaunatre Contact: Christophe.Dutang at […]
  • R言語 CRAN Task View:関数データ解析R言語 CRAN Task View:関数データ解析 CRAN Task View: Functional Data Analysisの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載した。 Maintainer: Fabian Scheipl Contact: fabian.scheipl at […]
  • R言語 CRAN Task View:時系列解析R言語 CRAN Task View:時系列解析 CRAN Task View: Time Series Analysisの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Maintainer: Rob J. Hyndman Contact: Rob.Hyndman at […]
  • R言語 CRAN Task View:RグラフィカルモデルR言語 CRAN Task View:Rグラフィカルモデル CRAN Task View: gRaphical Models in Rの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載した。 Maintainer: Soren Hojsgaard Contact: sorenh at […]
R言語 CRAN Task View:数値解析

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

Comments are closed.