7

超大型の数値求積関数を探しています。次の 3 つのプロパティが必要です。

  • 適応 - 被積分関数に合うようにサンプリング ポイントの密度を自動的に調整します。私の被積分関数は非常に不均一で計算コストが高いため、これは絶対に必要です。
  • ベクトル化 - 効率のために、一度に 1 つのポイントではなく、サンプル ポイントのリストで被積分関数を呼び出します。
  • ベクトル値の関数を処理できる - ベクトル値の被積分関数のすべてのコンポーネントは、追加コストなしで同時に計算されるため、すべてのコンポーネントを個別に統合しても意味がありません。

さらに、次のようにする必要があります。

  • 2D - 計算したい積分は平面領域の二重積分であり、積分全体の全体的な (相対) 許容誤差を指定して、エラー バジェットを適切に管理できるようにしたいと考えています。

そのような機能を持つライブラリを知っている人はいますか? 4 つのプロパティのうち 2 つまたは 3 つであっても、何もないよりはましです。

私は Python と SciPy を使用しているので、すでに Python で動作する場合はボーナスです。(しかし、必要に応じて被積分関数を呼び出すためのグルー コードを作成することもできます。)

4

3 に答える 3

1

quadrature関数はscipy.integrate、探しているものの最初の 2 つの要件を満たしています。同様のromberg関数は、別のメソッドを使用します。

その他の機能は、要件の 1 つだけを満たします。

  • 同様の名前のquad関数は適応求積を行いますが、スカラー引数を持つ関数のみをサポートします。パフォーマンスを向上させるために関数を渡すことができますがctypes、通常の Python 関数は非常に遅くなります。
  • simps関数および関連するサンプリング メソッドには、(通常は等間隔の) サンプルのベクトルを渡すことができますが、適応型ではありません。

あなたがリストした 3 番目の要件 (ベクトル値関数の連立積分) は少し難解であり、最初にベクトル化された関数を受け入れる機能と競合します (関数の引数は行列を取る必要があります!) 同様に、二重積分を計算すると、関数の仕様が大幅に複雑になります。

ほとんどの場合、このquadrature関数が最適です。

于 2016-04-26T02:17:05.813 に答える