精要復習上節課我們講了導數與微分。 導數的“導”,可以理解為“方向”之意。 方向決定了函數的運行,所以“導數”是函數的原因,函數是“導數”的結果。 數學即哲學,世界是存在因果關系的,因果關系即為導數與原函數的關系。 導數的MATLAB求解,很簡單: y=diff(fun,x) y=diff(fun,x,n) 最后介紹了導數的親兄弟——微分。 微分是增量的線性主部。 先思考一個問題計算器或計算機怎么計算“正弦函數”? 總不能查表吧?即使有表,那請問表又是怎么得到的呢? 這個問題的本質是,sin函數是人為定義的一個三角函數,它表面上并由“可直接計算”的函數組成,sin這個表示是一個堅硬的外殼,那怎么辦? 泰勒展開公式的誕生,完美解決了這個問題,它把這一類函數的堅硬外殼徹底擊碎,讓所有看起來無從下手的函數,全都變成了——多項式。 泰勒展開公式初探先看看泰勒公式長什么樣吧: 形式很多,這種容易記憶和理解 觀察公式形式我們發現:
如果是第一次學,看不太懂很正常,先不急理解上面的結論,先看下面這個實際的例子吧—— 泰勒展開公式就是“多項式仿真”還是上面的問題,怎么把sin(x)化成一個多項式的形式? 咱們在x0=0的位置按泰勒展開分解,可以自己動筆算算,結果為: 計算機就是這樣計算正弦函數的 為什么沒有n=2 4 6這些項?動筆的同學肯定知道,因為這些項的導數為0,消去了。 硬殼已擊碎,下面咱們利用MATLAB畫畫,直觀感受一下。 先只取第一項,先比較一下 sin(x) 與 x: 發現其實在0點附近,兩個函數還是很像的,由其兩者在0點的斜率幾乎相同。 這也是為什么老師教我們,當x很小時,sin(x)可以用x的值去代替。 繼續再加一項: 哎呀,重疊的區域更大了。其實,當項數越來越多,兩個函數就越來越像! 再加一項: 再加一項: 越多項,越像! 文章最后會附上MATLAB源碼,感興趣可以自己試一試。 所以說,泰勒展開公式,是對展開點附近的函數,進行的一個“多項式仿真”。 仿真,就一定有誤差,泰勒公式的仿真誤差怎么樣呢? 可控的多項式仿真誤差泰勒公式有無窮多項,但我們不可能計算出無窮多項,所以泰勒公式的另一種表達: 我們把從n+1往后所有的項給打包了,稱為R,課本上叫它“佩亞諾型余項”,說實話時間一長我也記不住這個外國名,所以我一直習慣叫它“誤差項”,還易于理解含義。 意思就是說,如果我只計算到n階導數項,那么誤差就是Rn了。 更絕的是,這個Rn被證明是x^n的高階無窮小,關于高階無窮小的概念我們以后會講,這里理解為Rn起到的作用,一定比前面那些項的作用小,即可。 要接受誤差,因為它無處不在 所以,我們要仿真一個“帶硬殼”的函數,只要使用泰勒展開取有限幾項,并保證誤差在可接受的范圍內,不就行了么? 所以說,泰勒展開公式是一個誤差可控的多項式仿真。 直觀理解泰勒展開首先,我們先嘗試理解最基本的2項多項式: 幾何表達: 即,x 處的函數值,約等于 x0 處的函數值,再加上由導數引起的變化量。 上節課我們理解了,導數即原因,所以我們可以這樣理解上式: 對未來的仿真計算 結果=現狀+原因x時間。 由于原因(導數)是當前的原因,所以仿真預測的結果肯定不完全準確,不過,只要時間足夠短,仿真結果就足夠準確啦。 這也印象了我們上節的理解,“導數”是函數的原因,函數是“導數”的結果。 直觀理解多項泰勒展開還不止如此哦,泰勒展開還有好多項呢! |
|