常用演算法設計方法(一) — 迭代法

來源:互聯網
上載者:User
 迭代法是用於求方程或方程組近似根的一種常用的演算法設計方法。設方程為f(x)=0,用某種數學方法匯出等價的形式x=g(x),然後按以下步驟執行:
(1)   選一個方程的近似根,賦給變數x0;
(2)   將x0的值儲存於變數x1,然後計算g(x1),並將結果存於變數x0;
(3)   當x0與x1的差的絕對值還小於指定的精度要求時,重複步驟(2)的計算。
若方程有根,並且用上述方法計算出來的近似根序列收斂,則按上述方法求得的x0就認為是方程的根。上述演算法用C程式的形式表示為:
【演算法】迭代法求方程的根
{    x0=初始近似根;
   do {
      x1=x0;
      x0=g(x1);   /*按特定的方程計算新的近似根*/
      } while ( fabs(x0-x1)>Epsilon);
   printf(“方程的近似根是%f/n”,x0);
}
迭代演算法也常用於求方程組的根,令
      X=(x0,x1,…,xn-1)
設方程組為:
      xi=gi(X)      (I=0,1,…,n-1)
則求方程組根的迭代演算法可描述如下:
【演算法】迭代法求方程組的根
   {    for (i=0;i<n;i++)
         x =初始近似根;
      do {
         for (i=0;i<n;i++)
            y=x;
         for (i=0;i<n;i++)
            x=gi(X);
         for (delta=0.0,i=0;i<n;i++)
            if (fabs(y-x)>delta)      delta=fabs(y-x);
         } while (delta>Epsilon);
      for (i=0;i<n;i++)
         printf(“變數x[%d]的近似根是 %f”,I,x);
      printf(“/n”);
   }
   具體使用迭代法求根時應注意以下兩種可能發生的情況:
(1)   如果方程無解,演算法求出的近似根序列就不會收斂,迭代過程會變成死迴圈,因此在使用迭代演算法前應先考察方程是否有解,並在程式中對迭代的次數給予限制;
(2)   方程雖然有解,但迭代公式選擇不當,或迭代的初始近似根選擇不合理,也會導致迭代失敗。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.