質問

計算する最速の方法は何ですか n- 数字のルート?

私はTry and Failメソッドを知っていますが、より速いアルゴリズムが必要です。

役に立ちましたか?

解決

これを行うための標準的な方法はです ニュートンの方法. 。あなたが知らない場合に備えて、xの誘導体n NXですn-1. 。これは役に立ちます。 1は良い最初の推測です。あなたはそれを関数a -xに適用したいn

iirc、それはフォームa -xの関数について超競合するn, 、しかし、いずれにせよ、それは非常に速いです。また、IIRCは、Wikiの収束に失敗したことについてのWikiの警告は、「素敵な」機能が不足しているという特性を持つより複雑な関数に適用されます。

他のヒント

最速ではありませんが、機能します。選択したタイプを置き換えます:

    private static decimal NthRoot(decimal baseValue, int N)
    {
        if (N == 1)
            return baseValue;
        decimal deltaX;
        decimal x = 0.1M;
        do
        {
            deltaX = (baseValue / Pow(x, N - 1) - x) / N;
            x = x + deltaX;
        } while (Math.Abs(deltaX) > 0);
        return x;
    }

    private static decimal Pow(decimal baseValue, int N)
    {
        for (int i = 0; i < N - 1; i++)
            baseValue *= baseValue;
        return baseValue;
    }

あなたは次のことを参照していますか n番目のルートアルゴリズム ?これは試行錯誤の方法ではなく、必要な精度に達するまで繰り返される反復アルゴリズムです。

vedic数学を使用してn'thルートを抽出することが最速の方法です。アルゴリズムの詳細については、参照してください http://www.vedicmaths.org/journal.asp

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top