zoukankan      html  css  js  c++  java
  • 柴夥說算法(3)--交替迭代

    變化越少,解決越易。

                                --題記

            多變量問題(比如方程組求解,或者優化目標函數,這裏不妨假設有個變量)是經常涉及到的一類問題,相較於單變量的優化問題,顯然這類問題更難以求解。交替迭代方法的基本思想是將多變量問題轉化爲單變量問題的求解,即,在一步計算時,保持其他的變量固定不變,只求解一個變量的問題,下一步時,再固定個變量,並尋找另一個變量求解,如此進行下去,直到得到問題的解。

           這裏面有一個關鍵的理論問題需要說明。交替迭代的數值結果,一定收斂到問題的精確解嗎?有沒有什麼判別條件能夠保證這種收斂?更進一步地,有沒有可能迭代求解次的結果就是問題的精確解呢?

           限於知識的廣度,這裏只舉兩個算法進行說明。第一個算法是求解線性方程組的Jacobi迭代法和Guass-Siedel迭代法,只要線性方程組的係數矩陣滿足一定的條件,可以在理論上證明,這兩種迭代法是收斂的;第二個算法是機器統計學習中的前向分步算法,它能夠將多個變量的優化問題簡化爲逐次求解各個變量的優化問題,儘管要求解的目標函數有限制,但是這樣的算法還是讓人眼前一亮的。另外,值得一提的是,交替迭代法是優化問題中常見的有效算法之一,比如ADMM算法。

           至於說交替迭代失敗的例子,典型的如分叉現象。比如2分叉現象,它將形成一個兩個數交替出現的數列,而不是收斂到某一個點;更複雜的情形,就是大名鼎鼎的混沌問題了,它也是目前最熱門的數學難題之一。

    參考資料:

    [1] Gauss-Siedel Method

        https://en.wikipedia.org/wiki/Gauss%E2%80%93Seidel_method

    [2] 統計學習方法,李航著,清華大學出版社,2012:143-146

    [3]  matlab作出分叉與混沌分支圖

    https://blog.csdn.net/cantjie/article/details/72836172

    [4] Alternating direction method ofmultipliers(ADMM)

    http://stanford.edu/~boyd/admm.html

    數學大家的Homepage,強烈推薦

  • 相关阅读:
    [Python_3] Python 函数 & IO
    [Python_2] Python 基础
    【一首小诗】每一个难捱的日子都是一首诗
    【排序算法】选择排序(Selection sort)
    【排序算法】冒泡排序(Bubble Sort)
    【待补充】[Python_1] Python 安装
    [IDEA_6] IDEA 集成 Python
    MySQL 的 CURD 操作
    [Spark SQL_1] Spark SQL 配置
    MySQL 基础
  • 原文地址:https://www.cnblogs.com/liuyc/p/9216346.html
Copyright © 2011-2022 走看看