機械求積法
轉載請注明出處!
一、引言
隨着人工智能的興起,在計算機領域又一次掀起了數學熱,不管是傳統的機器學習,還是現在的深度學習,都離不開積分的支撐,那計算機在底層到底是怎樣求積分的呢?小編同大家一起探討。
二、理論推導
我們知道,在我們所學的微積分中我們是通過牛頓-萊布尼茲公式進行求解,然而在實際運用中我們往往會遇到比較復雜的函數,他們的原函數我們往往是找不到的,這個時候我們應該怎么求解呢?
我們不難想的辦法是定義法,也就是把區間進行划分,當分點非常多的時候我們就可以用矩形面積代替曲線所圍成的面積,然而我們為了得到精度很高的結果往往需要划分等多區間,這樣計算的次數將大大增加。
那應該怎么優化呢?這里我們介紹一種求積分的辦法:機械求積法。
機械求積分法前戲:
在微積分中我們求定積分時不僅有牛頓-萊布尼茲公式,同時還有積分中值定理:
若函數在閉區間
上連續,,則在積分區間
上至少存在一個點
,使下式成立
我們從上式子出發,將求積分的問題轉化為找某一個的問題,那怎么替代呢?
假設我們的函數是一個0次函數也就是一個F(x) = C 是一個常函數時候,在[a,b]區間的定積分就是(a-b)*f(a),也就是矩形面積,這樣我們的f()=f(a),我們繼續加入是一次的呢?F(x) = ax + b
我們很容易想到這個圖形是一個梯形。
因而其積分=(b-a)*[f(a)+f(b)]/2,這就是我們的梯形公式,這里的f()=[f(a)+f(b)]/2,那問題來了,要是函數是一個不規則的曲線呢?那我們該怎么做呢?
很容易想到的就是把區間細分成很多個小區間,然后在每個區間找一個合適的f(),然后再求積分,再求和就好了,是的這就是們的思路,這個辦法就是機械求積法。我們下面給出定義:
機械求積法:
三、代數精度概念
在知道機械求積公式之后,那我們怎么檢驗一個求積公式的好壞的?這里我們引入代數精度的概念。
定義:
如果某個求積公式對於次數不超過m的多項式均能准確成立,而對於m+1次的的多項式不准確成立,則稱該公式具有m次代數精度。
(代數精度越高,越精確)
我們來看看梯形公式的代數精度:(在驗證時候只要取1,x,x^2,x^3.......等就行了,其他都可以由這幾個組合而成)
F(x) = (b-a)*[f(a)+f(b)]/2,當 f(x) = 1時候,設a=0,b=1,顯然成立,而f(x) = x 時,用牛頓-萊布尼茲公式算得:x^2/2|10 = 0.5,而用梯形公式得到的也是0.5,這樣對於f(x) = x時也精確成立,而當f(x) = x^2時候則不成了,那么我們就說
梯形公式具有一次代數精度,其他的代數精度的確定方法也同上。
四、插值型求積公式
我們在第二部分時候知道,我們的目的就是不斷的划分區間直到有辦法精確的求出積分(找到f()),此外呢,我們還可以通過插值法擬合曲線,把問題轉化為數值問題。
(沒有接觸插值法的可以移步) 見鬼吧拉格朗日插值法
這里我們用插值得到的插值多項式子替代原函
這就是插值型積分公式,這樣我們就通過插值法可以減少運算,然而這並不是我們最終要的,這只是個開始,更牛的還在后頭,請持續關注Jack計算方法系列博客。
轉載請注明出處!
點擊看看主頁其他內容唄!