問題タブ [mpmath]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
trigonometry - mpmath のような任意精度のライブラリは、単純な三角関数をどのように評価しますか?
関連するさまざまな加速方法を指摘しながら、簡単な説明を求めます。これは単なる好奇心のためです。
たとえば、mpmath の Web サイトでは、指数関数の公式が複素平面での演算に使用されることが示されていますが、今のところ、単純な実数で使用される演算にとどめておきたいと思います。
必要に応じて、実際の計算が mpmath で実行されるソース コード セクションへのリンクがあるとよいでしょう。ダウンロード可能なソースを検索することはできませんでした。
python - 小さな任意の浮動小数点値に対する arcsin 関数の最速の方法
mpmath の "mpf" 浮動小数点 bignum の形式にある小さな値のアークサイン関数を計算する必要があります。
私が「小さい」値と呼んでいるのは、たとえば e/4/(10**7) = 0.000000067957045711476130884... です。
これは、mpmath の組み込み asin 関数を使用して私のマシンでテストした結果です。
これは特定のケースです。私はやや小さい数を扱っているので、この特定のケース (= 小さい値) で mpmath を実際に上回る Python で計算する方法があるかどうかを自問しています。
テイラー級数は、小さな引数に対して非常に高速に収束するため、ここでは実際に良い選択です。しかし、どうにかして計算をさらに高速化する必要があります。
実際にはいくつかの問題があります:
1) 引数を小さな分数として記述できる場合にのみ有効になるため、2 分割はここでは効果がありません。ここでは完全精度の float が与えられます。
2) arcsin は非交互級数であるため、Van Wijngaarden または sumalt 変換も効果がありません (それらを非交互級数に一般化する方法を私が認識していない場合を除きます)。
https://en.wikipedia.org/wiki/Van_Wijngaarden_transformation
私が考えることができる唯一の加速度は、チェビシェフ多項式です。逆正弦関数にチェビシェフ多項式を適用できますか? 方法?
python - ユーザーが機能を拡張できるようにする適切な方法
関数の元のコードを変更せずに関数が操作できる型をユーザーが拡張できるようにする Python での適切な方法は何ですか?
my_module.foo()
もともと型で動作するように書かれた関数を持つモジュールがあるとしfloat
ます。mpmath
ここで、元のモジュールのコードを変更せずに、同じ関数が任意精度の浮動小数点数でも動作できるようにしたいと考えています。
C++ では、余分なオーバーロードを追加します (または、ヘルパー構造体を使用したテンプレートの特殊化の策略)。my_module.foo()
ユーザーが独自のカスタムフックを内部に追加できるようにするには、元のコードをどのように構成すればよいですか?
これを達成する方法はいくつか考えられますが、初心者の Python プログラマーとして、それらのほとんどは恐ろしいものになると確信しています :)
編集:これまでのすべての回答に感謝します。
おそらく、重要な要件の 1 つは、自分で定義していない型に対処できることであることを明確にする必要があります。たとえば、モジュールでジェネリック関数をコーディングしようとしている場合、組み込み型、型、sympy シンボリック型などcos
を呼び出したいと思います。もちろん、ディスパッチ ロジックがモジュールの実装に含まれないようにしたいと考えています。math.cos
mpmath.cos
mpf
sympy.cos
cos
python - mpmath で作成された複雑なプロットに凡例を追加する
複雑な関数をプロットするために、mpmath ライブラリのcplotコマンドを使用しています。それは非常に簡単に機能します。私がしなければならないことは、書くだけで、とcplot(G_fit, [0.001, v_max], [-v_max, v_max], points = 100000)
の関数のかなり滑らかなグラフが得られます。ただし、次の 2 つの問題があります。G_fit
0.001 < Re(z) < v_max
-v_max < Im(y) < v_max
凡例を追加するにはどうすればよいですか? ドキュメントには、関数の大きさは明るさで表され、位相角は色相であると書かれています。それは結構ですが、等級と色相は何ですか? 私がやりたいことは、グラフの横に黒から白に変わるバーを追加し、それらの明るさでの大きさを数値で示すことだけです。
大きさだけをプロットする方法はありますか (つまり、明るさだけですか?)
ありがとうございます。些細なことで申し訳ありませんが、ドキュメントでこれについて何も見つけることができませんでした。
python - Pythonの対数は、非常に小さな複素数を誤って計算しました
pythonを使用して、フォームのオブジェクトの対数を計算する必要があります
ここで、n0 と n1 は非常に小さい数値 ~ 1.0e-27 で、1j は虚数です。
cmath.log を使用すると間違った答えが返される
mpmath を使用すると、正しい結果を得ることができますが、引数を正しく表現した場合に限ります
与える
(これが正解です)一方
与える
何が起きてる?cmath.log() を使用するだけで正しい答えを得ることができますか?
python - 桁落ち numpy - mpmath
Python プログラムで numpy と mpmath を使用しています。多くの線形代数演算に簡単にアクセスできるため、numpy を使用します。しかし、一次方程式に対する numpy のソルバーはそれほど正確ではないため、より精度の高い演算には mpmath を使用します。システムの解を計算した後:
解決策を配列として欲しい。だから私は使う
次に、値を設定するためのループを実行します。
また
しかし、どちらの方法でも、次のような数値的な不安定性が再び発生します。
これらのエラーを回避する方法はありますか?
python - Python での Numpy と MpMath の相互運用性
小数精度が 100 の mpf 要素を持つ numpy 配列 A があります。 A の numpy 内積をそれ自体で取得することにした場合、この精度はキャストされますか?
この場合、numpy 配列を mpmath 行列に変換して精度を維持する方法はありますか?
python - マルチプロセッシング使用時の Sympy/mpmath/gmpy エラー
編集: これは sympy バグです。ディスカッションをhttps://github.com/sympy/sympy/issues/7457に移動しました
sympy
線と形状の交点を取ることを含むいくつかのコア機能を実行するために使用する Python プログラムがあります。この操作は数千回実行する必要があり、デフォルトのsympy
純粋な Python モジュールを使用すると非常に遅くなります。
インストールすることでこれを高速化しようとしましたgmpy 2.0.3
( も試しましたgmpy 1.5
)。これにより、コードが多少高速化されますが、 を使用multiprocessing
してさらに高速化すると、プログラムはTypeError
.
プログラムは、 を使用して単一プロセスで実行した場合と、 を使用gmpy
せずに実行した場合に正常に動作します。gmpy
multiprocessing.Pool
以前にこの種の問題に遭遇した人はいますか? 以下のプログラムは、この問題を再現します。
python - python / mpmath - 複雑な行列の実際の値を取得するには?
複素数値行列の実際の値を取得しようとしています。
私は両方を試しました:
しかし、どちらも機能しません。
ここでも情報を探してみましたが、何も見つかりませんでした http://docs.sympy.org/0.6.7/modules/mpmath/basics.html
最初にエラーメッセージが表示されます:cannot create mpf from matrix ...
2番目は次のようになります。insufficient indices for matrix
任意の助けをいただければ幸いです