関数への合理的な近似のオープンソース実装


15

関数への合理的な近似のオープンソース実装(Python、C、C ++、Fortranのいずれでも構いません)を探しています。記事に沿った何か[1]。私はそれに関数を与え、それは私に2つの多項式を返します。その比は与えられた間隔での近似であり、誤差は同じ振幅で振動し、最適な近似、またはそれに近いです。

ここに私が見つけたものがあります:

  • chebfunでできるように見えますが、Matlab *にアクセスできません。

  • 数値レシピ(NR)のセクション5-13「合理的なチェビシェフ近似」に簡単なプログラムがあります。

  • MathematicaにはEconomizedRationalApproximationとMiniMaxApproximationがあります

私は、NRコードよりも新しい(おそらくテスト済みの)ものがあるかどうか疑問に思いました。

私のアプリケーションは、特別な関数のセットを持っています。これは、超幾何級数として、または数値キャンセルを含む数式として与えられます。そして、堅牢で、高速で、正確な評価関数が必要です。 Hartree Fock計算で2つの粒子行列要素を計算する最も内側のループ。[2]に、自分に合った関数の簡単な例を示します。ご覧のとおり、SymPyを使用して計算したのは、直接式を使用するか、x = 0を中心とするシリーズのいずれかです。これは一種の働きをしますが、精度はそれほど高くありません。x= 1の場合、有効数字の約半分が失われます(ただし、x = 1e5と同様にx = 0.1の場合、ほぼすべての有効数字に対して正確です)。より良い近似値を探しています。

[1] Deun、J。、およびTrefethen、LN(2011)。合理的な近似のためのCarathéodory-Fejér法の堅牢な実装。BIT数値数学、51(4)、1039〜1050。doi:10.1007 / s10543-011-0331-7(2010年6月e-print

[2] https://gist.github.com/3831580

(*)chebfunウェブサイトにも404が表示されますが、Pedroはそれが私のプロバイダーの問題であるに違いないと示唆しました。

回答:


4

これは助けになるでしょうか?http://www.alglib.net/interpolation/rational.php


1
おかげで、これでうまくいくと思います。私はそれを使うことを学ぶ必要があります。現時点では、私はタイムプレスです。そのため、MathematicaのMiniMaxApproximationを使用して仕事を終わらせましたが、オープンソースツールを使用してこれを行う方法を学びたいと思います。
オンドレジ・セティク

10

1回限りの合理的な近似は、Remezアルゴリズムの「手動」反復によって実現できます。補間点の初期推測で(相対または絶対)交互符号エラーで合理的な近似を補間し、1つ(またはそれ以上)の点を見つけます。実際の誤差は、補間点とピボットの誤差を超えます(これらの推定点の1つ以上を交換し、符号の誤差を交互に保持します)。理論を一から理解するのに良い方法です。必要な精度がそれほど高くない場合、スプレッドシートの実装は、計算を通して自分の道を感じ、カットアンドペーストで問題を適応させるのに役立ちます。

簡単に説明するために、区間の非多項式関数を考えます。エンドポイントを通る割線は次のようになります。 y=1/バツ1バツ2ここに画像の説明を入力してください

「最大誤差」の点で直線を距離の半分だけ下げると、2つの端点と内部のこの臨界点をカウントする絶対誤差の3つの「等振動」点が得られます。したがって、滑らかな凸関数への最良の線形多項式近似は、ほとんど検査によって見つけることができます。

Chebfunソフトウェア自体はオープンソース(あるBSDスタイルのライセンス V4.0以降)。サイトへのリンクがその時点で404エラーを返していた理由は不明ですが、現在はv5.2.1にあります。(これらにはGitHubリポジトリもあります。)Chebfunプロジェクトは、区間上の(単変量実数)関数のMatlabベクトルのような構文である中心概念により、最高の合理的近似以上のものを目指しています。

円を完成させるには、MatlabではなくOctaveで動作させる必要があります。これについては2010年に開始れたOctave-maintainersスレッドがありました。Chebfunのメンテナー/著者による2012年の論文は、彼らの側からOctaveの互換性にいくらかの努力が払われたことを示唆しています。

見てみるとChebfun関連のプロジェクトページは、このようなオリヴィエ・ヴェルディエのように、Chebfunソフトウェアはオープンソースですので、このポートを行うことは可能であるかもしれない、あるいはそこに記載されているオープンソースパッケージのいずれかを使用するようにすることを示唆してpychebfunPythonのチェビシェフ関数 GitHubでホストされているプロジェクト


1
Chebfun Webサイトのこのリンクには、それを使用して合理的な近似を行う方法のドキュメントがあります。chebfun.org
guide04.html –OndřejČertík16年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.