簡體   English   中英

用Horner方案簡化算法

[英]Simplify algorithm with Horner Scheme

我有一個問題要解決以下練習:

*給出特殊多項式: 在此輸入圖像描述 輸入:系數a [n],a [n-1],...,a [0],參數x

在C#或Pseudocode中創建一個算法,它將使用Horner的方法來求解x的特殊多項式。*

我創建了一個用Horner方法解決默認多項式函數的算法,但它不適用於特殊函數,因為指數是平方的。 我不知道如何修改算法以尊重平方指數,因為據我所知,Horner的方法不使用指數。 這是我的代碼:

        int[] a = new int[] { 0, 3, 2, 1};//a[0] - a[n]
        int n = 3;
        int x = 2;

        double r = a[n];
        for (int i = n - 1; i >= 0; i--)
        {
            r = r * x + a[i];
        }
        Console.WriteLine(r);

我很感謝你的幫助!

提示1

4 * 4 = 1 + 3 + 5 + 7

提示2

x ^(4 * 4)= x ^ 1 * x ^ 3 * x ^ 5 * x ^ 7

提示3

a(4)* x ^(4 * 4)+ a(3)* x ^(3 * 3)+ a(2)* x ^(2 * 2)+ a(1)* x + a(0) =(((a(4)* x ^ 7 + a(3))* x ^ 5 + a(2))* x ^ 3 + a(1))* x ^ 1 + a(0)

提示5

您可以通過在每次迭代時將先前的奇數冪乘以x ^ 2來跟蹤x的奇數冪

讓我重新考慮一下鈍方法Horner的方法來評估給定值x 0的單個變量x中的多項式aₙxⁿ+ ... + a2x2 + a1x + a0:

  • 只需將x 0提高到每個非零系數aₖk > 1)的適當功率k
    乘以並積累這些術語
  • 從“最高”系數開始; 有一個“較低”的系數,乘以x 0提高到先前系數和當前系數之間的指數差,並加上后者

霍納的方法可以節省工作量,因為功率x 0必須提高到(更低)和(因為這個原因)更少(降低到只需要/使用x 0 )。

如何使用平方指數保存評估多項式的​​工作?

  1. 在計算更大的權力時重復使用較小的權力。

    • 方指數很特別

      正如相鄰正方形相差和奇數2大於下一個較低的一對,相鄰的正方形權力奇次冪

    下一個奇數功率是當前的一個乘以平方

  2. 評估從“最高系數”到最低

    • 將此與1.相結合,

      有權力評估備忘或明確保持權力(使用)。
      最先設置它們可能是最簡單的。


是技巧 (仍然) 霍納的方法的組合
你決定。 (以及您的導師/老師/面試官。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM