牛頓和拉夫森
牛頓-拉夫森法。從名字上看,你可能會覺得牛頓和拉夫森作為一個團隊一起工作,然後共同提出了這個方法。但實際上,他們是獨立發現的。還記得他是如何和萊布尼茨一起發現微積分的嗎?為什麼這個人有這麼多想法的時候其他人也有呢?這實際上是很有可能的,因為對於處於某一領域研究前沿的許多人來說,接下來的步驟通常不會太模糊。
讓我們來看看牛頓-拉夫森法的原理。
x是什麼?
代數的本質是求解未知量的方程。例如,求x,其中:
2x + 5 = 7
很容易看出,上面方程的解是x=1。另一種理解方法是把所有東西都移到一邊,然後調用表達式y,得到:y=2x - 2。然後,我們試著找出y=0求得x。
但是當y用x表示變得越來越複雜的時候會發生什麼呢?我們能找到所有(或至少一個)滿足y=0得x的值嗎?例如,下面的圖1顯示了y與x之間一些更複雜的關係。但是,在所有情況下,y=0都滿足於x=1(儘管可能不完全滿足)。
圖1:不同的函數在x=1處都有0現在,如果我們有一個二次方程,我們怎麼解它?我們可以簡單地用二次公式(當只有一個變量x時),但我們先假設我們不知道這個公式。我們只知道如何解線性方程組。我們能否用解線性方程組的知識來解非線性方程組(這裡是二次方程)?
y=x
讓我們從任意隨機點x開始,現在,計算我們的二次函數在x處的值,稱它為y,我們的工具是一個線性方程求解器,但我們有一個二次方程。我們把二次方程轉換成線性方程。要做到這一點,只需用一個線性方程近似二次方程(使用泰勒級數)。當我們解這個線性方程時,我們會得到x的一個解,但我們不能期望這個答案是「正確的」,因為我們「作弊」了——解了一個線性方程而不是一個二次方程。唯一不同的是,這次我們用之前的線性方程的解作為起點。最後,這個過程把我們引向二次方程的解,如下圖所示。
圖2:拋物線的牛頓-拉弗森迭代法使我們越來越接近拋物線與x軸相交的點。加大尺寸
現在,你可能已經看到了與前面的可視化非常相似的東西。但是,這是如何擴展到多維度的呢?例如,我們現在有兩個變量,x和y,而不是一個變量x,將方程(2)擴展到二維最自然的方法是:
z=x+y
它是這樣的:
圖3:一個拋物面,一種多圓二次方程。這裡,x和y是維度,z軸代表拋物面的函數形式。和之前一樣,我們要求出z=0。這發生在上圖的綠色圓上,也就是拋物面方程與x-y平面相交的地方。但綠色的圓圈是無限個點,不是一個,兩個或三個等等。這是很自然的,因為我們增加了變量的數量到兩個,但保持方程的數量不變。為了得到有限數量的解,我們需要有與變量相同數量的方程,也就是兩個。
我們可以為第二個方程選擇很多選項。為了簡單起見,我們只需複製現有的等式並將其移動一點點。就像這樣,我們現在有兩個方程。
圖3:我們要演示如何求解多個方程。為了簡單起見,我們只需要利用拋物面現有的方程並複製它來形成第二個方程。另外,第二個方程與x-y平面也相交於一個圓,這兩個圓相交於兩個不同的點,這兩個點就是方程組的解。這就是下圖中的兩個黃點。
圖4:兩個拋物面表示兩個二次方程相交於兩點。現在,我們如何用之前的方法得到這些解?
我們將從x-y平面上的任意隨機點開始(下圖5中的粉色點)。它可以投射到綠色拋物面上的綠點(這是我們的第一個二次方程)和黃色拋物面上的黃點(我們的第二個二次方程)。然後我們可以在綠色和黃色的點上畫出最佳的線性近似的綠色和黃色的拋物面。因為線性方程是平面的,所以我們得到了綠色和黃色的平面。這些平面會在紫色的直線上相交然後在某一點與x-y平面相交。這一點是兩個線性方程組的解(兩個拋物線的近似值)。
圖5:N—R迭代——我們反覆求解兩個二次方程近似得到的線性方程組。這使我們越來越接近原二次方程組的一個實解。這一點當然不是二次方程組的解,因為我們「欺騙」了它們,用線性方程近似它們。然後我們從這個新的點開始重複整個過程。這樣做一次又一次,我們得到兩個二次方程的一個解(兩個黃點)。
如果我們想要第二個解呢?那麼,我們從一個不同的隨機起點開始,重複這個過程,直到找到一個我們以前沒有見過的解。
注意:你會在最優化的上下文中看到牛頓·拉弗森法,而在這裡,我們把它描述為求解方程的一種方法。但是,當我們注意到優化通常涉及到找到梯度(一個導數向量)並將其設置為0時,它確實簡化為一個求解方程組的問題。