2

二分法を使用して多項式の根を見つけている場合、場合によっては、多項式によっては、根が負または正になることがあります。

多項式の評価結果に基づいて、根が負になるか正になるかを判断できることは理解していますが、x として何を使用するかはわかりません。

誰かがここで洞察を与えることができますか?

4

4 に答える 4

2

根が負にも正にもなり得るという事実は、二分法とは何の関係もありません。根の存在は、微積分の中間値定理を使用して証明できます。

したがって、あなたがしなければならないのは、マイナスでありプラスであるポイントなどを見つけることだけx1ですx2. 次に、IVT から と の間にルートがあることがわかります。その間隔で二分探索を行うことでそれを行います。が負の場合、区間 で二分探索を繰り返します。それ以外の場合は、 interval で検索します。y(x1)y(x2)x1x2y(x3) = y((x1+x2)/2)[x3,x2][x1,x3]

ルートが負であるか正であるかは問題ではありません。それがあなたの質問に答えているかどうかはわかりませんが、アルゴリズムを理解するのに役立つことを願っています.

于 2012-01-14T23:09:13.923 に答える
0

あなたはおそらくこれが役に立つと思うでしょう。

システムを使用する;

名前空間Bisection_Method

{{

class Program

{

    public double midPoint (double xl, double xu)

{

    return (xl + xu) / 2;

}

    public double function(double x)

    {

        return (x*x-2);

    }

    static void Main(string[] args)

    {

        Program root = new Program();

        double xm=0, xl=1, xu=2, check=0;

        for (int x = 0; x < 20; x++)

        {

            xm = (xl + xu) / 2;

            check = root.function(xl) * root.function(xm);

            if (check < 0)

                xu = xm;

            else if (check > 0)

                xl = xm;

            else if (check == 0)

            {

                break;

            }

        }

        Console.WriteLine("The Approximate of the Root is {0}", xm);

    }

}

}

http://mustafa.amnbytes.com/2012/09/bisection-method-program-in-c.html

于 2012-10-23T03:24:38.717 に答える
0

二分アルゴリズムを使用するには、最初にルートを含む区間を見つける必要があります。このための標準的なアルゴリズムは、スツルムの定理に示されています。

ただし、標準の二分アルゴリズムでは、エンドポイントの関数値の符号が異なることが想定されています。これは問題になる可能性があります。最も単純な例は、2次の単一のルート0を持つx ^2です。x^2はゼロ以外のすべてのxに対して正であるため、二分アルゴリズムでの使用に適したルートを囲む区間を見つけることができません。

于 2012-05-14T07:52:33.910 に答える
0

多くのルートファインダーでは、ユーザーが検索を開始するための開始点を指定できます。これにより、ユーザーは結果を「いじる」ことでさまざまなルートを見つけたり、ファインダーをルートに収束させたりすることができます。

ユーザーが開始値を提供できるようにすることが意味をなさない場合は、いくつかのポイントを調査することから始めることができます。

  • -1、0、1
  • -10、0、10
  • -100、0、100

入力が奇数多項式の場合、これは最終的に二分法に適した範囲を検出します。入力が偶数の多項式の場合、符号の変化をキャッチできない可能性があります(f(x)= x ^ 2-を考慮してください。負になることはありません)。したがって、一定の(構成可能な?)量のプロービングの後で諦める準備をしてください。

ここでは、範囲を10の累乗で大きくすることを提案しました。二等分アプローチは毎回範囲を半分に減らすので、おそらくこれはあまりにも保守的です。(範囲を次の「よりタイトな」ブラケットに減らすには、二分法を2〜3回繰り返す必要があります。)おそらく、ジャンプを大きくする方がよいでしょう。

  • -10、0、1
  • -1000、0、1000
  • -100000、0、100000

これにより、実行するプローブは少なくなりますが、より多くの二等分が必要になります。いくつかの多項式を試して、両方の提案で根を見つけるための実行時間を追跡します。

于 2012-01-15T02:36:10.267 に答える