牛頓法怎麼理解?還有什麼其他方法進行高次方程的數值求解?
牛頓迭代法,我另外一篇文章寫過, 如何通俗易懂地講解牛頓迭代法求開方? ,在那篇文章中也提到牛頓迭代法本有不少問題,比如:
- 初值的選擇對問題的求解影響太大,可能導致求不出來、或者求解效率低
- 無法得知有幾個根。就算知道有幾個根,也不一定可以盡數求出
- 迭代過程中,你也不知道這次迭代的值和根的誤差有多大
所以說來,牛頓迭代法算不上很實用的求根方法,不過求平方根還是比較好用的(因為隨便選個初值,都會收斂,並且收斂速度還很快),這也是經常可以看到牛頓迭代法出沒的地方。
下面介紹一個更實用的求根方法。
米歇爾·羅爾(1652-1719),法國數學家,最著名的數學遺產是羅爾中值定理(數學史看多了,對這些數學英雄心生敬意,特立照於此)。
其實羅爾的數學研究重心在於多項式方程的根的求解,發明了一種我翻譯為級聯求根法的方法(英文:The Method of Cascades),這種方法的一個副產品是羅爾中值定理。
儘管羅爾中值定理是微積分很基本、很重要的定理,但是羅爾本人並不認可微積分,認為微積分是一堆錯誤的集合。鬼知道他是怎麼在沒有微積分的幫助下發明羅爾中值定理,並且發明出他的求根方法的(後面你會看到,他的求根方法完全基於微積分,當然這是現代人翻譯後的結果,他的原始手稿你一定是不想看的,最後會有,可以漲下姿勢)。
我們先來看看它求根的思想是什麼(下面都是用現代的數學語言翻譯過的)。
1 數學思想
羅爾研究的對象是形如 這樣的多項式方程的根。
假如說這樣一個多項式的方程的根存在,我們怎麼求解呢?最粗暴的辦法,把定義域範圍內的每個實數拿來代入方程,看是否是多項式方程的根,這怕比大海撈針還希望渺茫。
羅爾給了一種方法,讓我們可以確定每個根的範圍。
1.1 駐點與根
假設 的所有的根為 ,有 ,滿足 。
一次函數的情況:
二次函數的情況:
求出駐點:
當然也可能出現 或者 區間內沒有根的情況。
比如這樣:
或者這樣(根有可能出現在駐點上):
這該怎麼判斷呢?我們來複習下零點定理(其實就是介值定理的特殊情況),從幾何上看顯而易見:
根據零點定理可以判斷:
從上面的觀察來看,我們可以猜想根的上界與相鄰駐點、下界與相鄰駐點之間至多只有一個根。
我們來看看有沒有這種可能,會不會兩個根都在 ,或者在 之間呢:
此處羅爾使用了羅爾中值定理(這就是羅爾中值定理的出處)進行了反證, 很顯然符合使用羅爾中值定理的條件, 連續, 可導:
至此,我們可以得到一個結論:上界與相鄰駐點、下界與相鄰駐點之間至多只有一個根。
三次函數的情況:
求出駐點:
同樣的,通過羅爾中值定理,我們可以得到結論,相鄰駐點之間至多只有一個根。
四次函數的情況:
至此,我們總結一下:
- 上界與相鄰駐點、下界與相鄰駐點之間至多只有一個根
- 相鄰駐點之間至多只有一個根
- 區間內是否有根可以通過零點定理來進行判斷
根據上面結論,求函數 在 ( 分別為根的下界和上界)內的根,只需要求出 在 內的所有駐點 ,則所有根必定落在 內,每個區間至多有一個根,我們還可以通過零點定理來幫忙。然後我們就可以在這些區間內愉快的搜索了。
求駐點相當於求 的根,對於多項式函數而言, 一般是比 簡單的。
拉格朗日把上面的結論表述為:
方程 根的界限是由方程 的根確定。
--拉格朗日
這樣求根就化成了求駐點。那麼我們可以開始了嗎?別慌,如何求根的上下界還沒交代呢。
1.2 根的上界
羅爾說的,對於多項式 ,它的根都小於 ,其中 為最大負數項的係數的絕對值(我找了半天也沒有找到證明,不過看到有別的證明可以佐證,感興趣可以參看書籍《first course in the theory of equations》21頁)。
舉個例子:
這個式子也可以表述為:
最大負數係數項即 ,則它的根小於 ,即我們可以說 ( 代表根的上界)。
1.3 根的下界
知道上界之後,通過一個替換我們就可以確定根的下界。
已知 根的上界為 ,那麼如果 為 的根的話,必定有 。
那麼我們做一個替換,令 ,代入 。
那麼對於 的根而言,,所以下界 ,而上界 需要根據剛才的演算法重新算出來。
2 示例
來看一個具體的例子,下面只計算到小數點後兩位:
求 的根.
2.1 方程變形
根據之前的根的上界的演算法,,得到根 。則令 。
代入 ,整理得到:
。
2.2 級聯求根
對 連續求導,直到只有一次項為止。
然後我們需要從 逐級求根。
雖然(1)(2)(3)(4)方程都可以通過通式求出,但是為了演示方法,我還是從(4)式開始求:
,這其實就是(3)的駐點:
點太遠了,不方便畫圖,我們暫時把 放到圖外去:
通過零點定理和二分法(二分法的效率還是很高的),很快就可以算到 (保留小數點後兩位),實際上就求得了(2)式的駐點。
反覆運用上述方法,求得 的根為:,因為保留小數點後兩位,上述根並不精確,比如 ,其實精確的根應該為。
2.3 得到結果
最後將此代入:
求得 的根為 。
3 結論
羅爾的方法對連續可導的 都是適用的,並非要局限在多項式,但是,至少要 比 更容易解才有意義。
最後,讓我們用羅爾研究這個問題的手稿來結束這篇文章,儘管三四百年的數學發展讓我們已經很難看出他寫的是什麼了:
牛頓法的原理就是通過迭代地求曲線的切線來逼近方程的解,如圖:
求解方程的數值解的常用方法還包括bisection method、method of false position、Secant method、Muller method、Taylor series method、Brent"s method、Languerre"s method等等。澳村高三狗強答一發,方法比較低端,希望大神們不要鄙視
首先,我們先弄清什麼是根,在圖像上就是和x軸交叉的點,很好理解,但是代數上呢?就是當x=a時候f(x)=0
這個時候我們有了一個定理叫因式定理 https://zh.wikipedia.org/wiki/%E5%9B%A0%E5%BC%8F%E5%AE%9A%E7%90%86
維基的解釋有點高端模糊,簡單的說就是對於f(x),如果x=a是一個解,則(x-a)是一個因數(不知道怎麼翻譯,英語叫factor)然後就會成為f(x)=(x-a)Q(x), Q(X)代表另一個多項式但是係數減一(因為之前的x-a已經「拿走」了一個了)
好,假設我們有一f(x)=x^3+3x^2+4x-8
帶入x=1,發現函數等於一(這是難點,因為第一個很難確定,有一個小trick就是一定是常數項的一個因數)說明1是一個解
然後我們就要引出主角:synthetic substitution
(不會知乎上用就只好word裡面打好截圖了,畢竟還naive...)
這題可以做例題,因為是標準的格式
補充:當有一項比如上題如果沒有x的一次項的話還是要用0補充的
最後得出0的話說明是一個解,如果不是0而是一個常數let"s say k的話那k就是餘數(除數為x-a時)
這個方法不適合很高次,但是對6以下的還是比較方便的,畢竟可以不斷的把係數降下來,降到二次的時候就很簡單了
wiki:
Synthetic division
《數值分析》
牛頓迭代就是用直線/二次/三次曲線切待求零點的曲線,每次去切完,該切線的零點都更接近於原曲線零點,將該切線的零點代入下次迭代並作為切點的自變數坐標,就能不斷逼近實際零點.非線性方程組的數值解法很多,比如CG-就是先亂猜一個差不多的解,然後看看差了多少,該往什麼方向去修正,再把修正過的結果代入下次迭代,這個在處理維數異常高的方程組的時候要比牛頓法快些.講數值方法的書有好多啊,自己找來看看比在這裡問要有效得多……
推薦閱讀:
※關於凸函數的定義問題?
※dy(微分)為什麼要這麼定義,為什麼要忽略高階無窮小量?
※為什麼主纖維叢的定義中結構群在叢流形上有右作用而不是左作用?
※如何用數學語言來定義無理數?
※為什麼不能用幾何圖形來證明數學定理呢?