2011-10-18 6 views
0

いくつかの数値計算アプリケーションでは、シミュレーション中に生成された1次元の数値関数の複数(未定義数、ゼロ以上)の実数根を見つける必要があります。それは分析的な表現がない。数値関数の根を見つけるための最も良い並列方法

与えられた精度が与えられたら、これを実行するための最良の(最速の)並列方法/アルゴリズムがどちらのものか不思議です。

+1

関数はどのように格納/計算されていますか?それはx、f(x)のペアの数ですか、それとも何ですか?あなたは、関数のプロパティに関する何かを知っていますか?それは連続ですか? –

+0

他のもののために並列性を保存する方が良いのではないでしょうか?つまり、この関数を複数回解く場合などは、ソルバーを並列化する必要はありません。ソルバーへの呼び出しのみを並行して実行する必要があります。確かに、私は並列化に傾いている1Dソルバーについては知らない。 –

答えて

4
クラシック divide and conquer algorithmを容易に並列化することができるされている平行 Root-finding algorithm

Bisection method、探している

: 関心の間隔を[B](おそらく重複)nに分割されることができる間隔f(a) < 0 and f(b) > 0 or f(a) > 0 and f(b) < 0

いくつかのより一般的で複雑なアルゴリズムが推奨されています。例えば、hereを見てください。

+1

二分法をどのように並列化できるのか分かりません。 –

+0

二等分線の各辺を再帰的にチェックして並列化します。バイナリツリーのようなものです。ソートアルゴリズムに精通していれば、マージソートのようなものです。あなたはチャンクから始め、半分に分割してから、チャンクを個別に分割し、それぞれを半分に分割し、ルートをチェックします。 – grisaitis

関連する問題