fbpx
维基百科

數值微分

數值微分數值方法中的名詞,是用函數的值及其他已知資訊來估計一函數導數演算法

有限差分法 编辑

最簡單的方式是使用有限差分近似。

簡單的二點估計法是計算經過(x,f(x))及鄰近點(x+h,f(x+h))二點形成割線的斜率[1]選擇一個小的數值h,表示x的小變化,可以是正值或是負值。其斜率為

 

此表示法是牛頓差商,也稱為一階均差

割線斜率和切線斜率有些差異,差異大約和h成正比。若h近似於0,則割線斜率近似於切線斜率。因此,函數f真正在x處真正的斜率是割線趨近切線時的差商:

 

若直接將h用0取代會得到除以零的結果,因此計算導數需要一些較不直覺的的方式。

同様的,切線斜率也可以用(x - h)和x二點的割線斜率近似。

另外一種二點估計法是用經過(x-h,f(x-h))和(x+h,f(x+h))二點的割線,其斜率為

 

上述公式稱為對稱差分,其一次項誤差相消,因此割線斜率和切線斜率的差和 成正比。對於很小的h而言這個值比單邊近似還要準確。特別的是公式雖計算x點的斜率,但不會用到函數在x點的數值。

估計誤差為:

 ,

其中 為在  之間的某一點。此誤差沒有包括因為有限準確度而產生的捨入誤差

很多工程計算機都是用對稱差分來計算導數,像德州儀器(TI)的TI-82TI-83TI-84TI-85,其h=0.001[2][3]

雖然在實務十分常用,但上述二種方式的數值微分常被研究者批評,尤其是被一些鼓勵使用自動微分的研究者批評[4],因為上述的數值微分其精確度不高,若計算器精準度是六位數,用對稱差分計算導數只有三位數的精確度,而若是找到一計算斜率的函數,仍可以有幾乎六位數的精確度。例如假設f(x) = x2,用2x計算斜率有幾乎完整的準確度,而用差分近似就會有上述的問題。

利用浮點數的實際考量 编辑

 
在浮點數運算下,不同的 造成的捨入誤差及公式誤差,只有在特定值下誤差才是最小值

若計算時使用浮點數,就需要考慮h要取到多小。若選的太小,相減之後會有大的捨入誤差,事實上整個有限差分的公式都是病態[5],若h夠小,導數不為零的情形下,在相消後會得到數值微分為零的結果[6],若h太大,計算割線斜率的結果就會更加準確,但用割線斜率估算切線斜率的誤差就更大了。

一種可以產生夠小的h,但又不會產生捨入誤差的方式是 (不過x不能為0),其中最小浮点数英语machine epsilonε大約是2.2×10−16數量級。 [7]。以下是一個一個可以平衡捨入誤差和公式誤差,有最佳精確度的h

  [8] (不過f"(x) = 0時不成立),而且需要有關函數的資訊。

上述的最小浮点数是針對雙精度(64-bit)變數,單精度變數在這類計算幾乎不太實用。其計算結果在二進制中不太可能是「整數」。雖然x是可以用浮點數表示的數字,但x + h幾乎不會也是可用浮點數表示(而且和x不同)的數字,因此x + h需調整為機器可讀的數字,因此會出現(x + h) - x不等於h的情形,因此用二個函數計算值計算微分時,二個位置的差不會是h。幾乎所有的十進制分數在二進制下都會是循環小數(都像1/3在十進制中的情形一様),例如h = 0.1在二進制下會是循環小數,是 0.000110011001100...。因此在浮點數下一個可能計算的方式是:

 h:=sqrt(eps)*x; xph:=x + h; dx:=xph - x; slope:=(F(xph) - F(x))/dx; 

先計算(x + h) - x的值,再用這個值作為微分算式的分母,不過若是用電腦計算,編譯器最佳化的機能可能會認為dxh相同,因此讓上述的方式失效。若是用C或其他類似的程式語言,可以讓xph宣告成Volatile变量,以避免此一問題。

高階方法 编辑

也有用更高階估計導數的方法,或是估計高階導數的方法。

以下就是一階導數的五點法(一維下的五點模版英语five-point stencil[9]

 

其中 .

微分求积 编辑

微分求积英语Differential quadrature(Differential quadrature)是用函數在特定位置數值的加權和來近似導數[10][11],其名稱類似數值積分中用的求积(quadrature),也就是像梯形法或是辛普森法中用的加權和,有許多方式可找出加權的係數,在求解偏微分方程時會用到微分求积。

複變的方法 编辑

傳統用有限差分近似數值微分的方式是病態的,不過若 全純函數,在實軸上的值都是實數,可以用複數平面中靠近 的位置來求值,此方式為數值穩定的方式,例如[6]一階導數可以用以下的複數導數公式計算[12]

 .

上述公式只在計一階導數時有效,若要拓展到任意階導數,需要用到多重复数,結果也會是多重复数的導數。[13]

而任意階的導數可以用柯西積分公式計算:

 ,

其中積分會用數值積分計算。

Lyness和Moler在1967年提出用複變數來計算數值微分[14]。Abate和Dubner提出一種用複數拉普拉斯轉換的數值反演為基礎的算法[15]

參考資料 编辑

  1. ^ Richard L. Burden, J. Douglas Faires (2000), Numerical Analysis, (7th Ed), Brooks/Cole. ISBN 0-534-38216-9
  2. ^ Katherine Klippert Merseth. Windows on Teaching Math: Cases of Middle and Secondary Classrooms. Teachers College Press. 2003: 34. ISBN 978-0-8077-4279-2. 
  3. ^ Tamara Lefcourt Ruby; James Sellers; Lisa Korf; Jeremy Van Horn; Mike Munn. Kaplan AP Calculus AB & BC 2015. Kaplan Publishing. 2014: 299. ISBN 978-1-61865-686-5. 
  4. ^ Andreas Griewank; Andrea Walther. Evaluating Derivatives: Principles and Techniques of Algorithmic Differentiation, Second Edition. SIAM. 2008: 2– [2016-07-03]. ISBN 978-0-89871-659-7. (原始内容于2016-07-29). 
  5. ^ Numerical Differentiation of Analytic Functions, B Fornberg - ACM Transactions on Mathematical Software (TOMS), 1981
  6. ^ 6.0 6.1 Using Complex Variables to Estimate Derivatives of Real Functions, W Squire, G Trapp - SIAM REVIEW, 1998
  7. ^ Following Numerical Recipes in C, Chapter 5.7 (页面存档备份,存于互联网档案馆
  8. ^ p. 263 [1] (页面存档备份,存于互联网档案馆
  9. ^ Abramowitz & Stegun, Table 25.2
  10. ^ Differential Quadrature and Its Application in Engineering: Engineering Applications, Chang Shu, Springer, 2000, ISBN 978-1-85233-209-9
  11. ^ Advanced Differential Quadrature Methods, Yingyan Zhang, CRC Press, 2009, ISBN 978-1-4200-8248-7
  12. ^ Martins, JRRA; Sturdza, P; Alonso, JJ. The Complex-Step Derivative Approximation. ACM Transactions on Mathematical Software. 2003, 29 (3): 245–262. doi:10.1145/838250.838251. CiteSeerX: 10.1.1.141.8002 . 
  13. ^ (PDF). [2012-11-24]. (原始内容 (PDF)存档于2014-01-09). 
  14. ^ Lyness, J. N.; Moler, C. B. Numerical differentiation of analytic functions. SIAM J.Numer. Anal. 1967, 4: 202–210. doi:10.1137/0704019. 
  15. ^ Abate, J; Dubner, H. A New Method for Generating Power Series Expansions of Functions. SIAM J. Numer. Anal. March 1968, 5 (1): 102–112. doi:10.1137/0705008. 

相關條目 编辑

  • 自動微分
  • 差分
  • 五点模板英语Five-point stencil
  • 數值積分
  • 數值常微分方程英语Numerical ordinary differential equations
  • Savitzky–Golay濾波器英语Savitzky–Golay filter
  • 數值分析軟體列表英语List of numerical analysis software

外部連結 编辑

數值微分, 是數值方法中的名詞, 是用函數的值及其他已知資訊來估計一函數導數的演算法, 目录, 有限差分法, 利用浮點數的實際考量, 高階方法, 微分求积, 複變的方法, 參考資料, 相關條目, 外部連結有限差分法, 编辑最簡單的方式是使用有限差分近似, 簡單的二點估計法是計算經過, 及鄰近點, 二點形成割線的斜率, 選擇一個小的數值h, 表示x的小變化, 可以是正值或是負值, 其斜率為, displaystyle, over, nbsp, 此表示法是牛頓的差商, 也稱為一階均差, 割線斜率和切線斜率有些差異, 差. 數值微分是數值方法中的名詞 是用函數的值及其他已知資訊來估計一函數導數的演算法 目录 1 有限差分法 1 1 利用浮點數的實際考量 1 2 高階方法 2 微分求积 3 複變的方法 4 參考資料 5 相關條目 6 外部連結有限差分法 编辑最簡單的方式是使用有限差分近似 簡單的二點估計法是計算經過 x f x 及鄰近點 x h f x h 二點形成割線的斜率 1 選擇一個小的數值h 表示x的小變化 可以是正值或是負值 其斜率為 f x h f x h displaystyle f x h f x over h nbsp 此表示法是牛頓的差商 也稱為一階均差 割線斜率和切線斜率有些差異 差異大約和h成正比 若h近似於0 則割線斜率近似於切線斜率 因此 函數f真正在x處真正的斜率是割線趨近切線時的差商 f x lim h 0 f x h f x h displaystyle f x lim h to 0 f x h f x over h nbsp 若直接將h用0取代會得到除以零的結果 因此計算導數需要一些較不直覺的的方式 同様的 切線斜率也可以用 x h 和x二點的割線斜率近似 另外一種二點估計法是用經過 x h f x h 和 x h f x h 二點的割線 其斜率為 f x h f x h 2 h displaystyle f x h f x h over 2h nbsp 上述公式稱為對稱差分 其一次項誤差相消 因此割線斜率和切線斜率的差和h 2 displaystyle h 2 nbsp 成正比 對於很小的h而言這個值比單邊近似還要準確 特別的是公式雖計算x點的斜率 但不會用到函數在x點的數值 估計誤差為 R f 3 c 6 h 2 displaystyle R f 3 c over 6 h 2 nbsp 其中c displaystyle c nbsp 為在x h displaystyle x h nbsp 和x h displaystyle x h nbsp 之間的某一點 此誤差沒有包括因為有限準確度而產生的捨入誤差 很多工程計算機都是用對稱差分來計算導數 像德州儀器 TI 的TI 82 TI 83 TI 84及TI 85 其h 0 001 2 3 雖然在實務十分常用 但上述二種方式的數值微分常被研究者批評 尤其是被一些鼓勵使用自動微分的研究者批評 4 因為上述的數值微分其精確度不高 若計算器精準度是六位數 用對稱差分計算導數只有三位數的精確度 而若是找到一計算斜率的函數 仍可以有幾乎六位數的精確度 例如假設f x x2 用2x計算斜率有幾乎完整的準確度 而用差分近似就會有上述的問題 利用浮點數的實際考量 编辑 nbsp 在浮點數運算下 不同的h displaystyle h nbsp 造成的捨入誤差及公式誤差 只有在特定值下誤差才是最小值若計算時使用浮點數 就需要考慮h要取到多小 若選的太小 相減之後會有大的捨入誤差 事實上整個有限差分的公式都是病態的 5 若h夠小 導數不為零的情形下 在相消後會得到數值微分為零的結果 6 若h太大 計算割線斜率的結果就會更加準確 但用割線斜率估算切線斜率的誤差就更大了 一種可以產生夠小的h 但又不會產生捨入誤差的方式是e x displaystyle sqrt varepsilon x nbsp 不過x不能為0 其中最小浮点数 英语 machine epsilon e大約是2 2 10 16數量級 7 以下是一個一個可以平衡捨入誤差和公式誤差 有最佳精確度的h為h 2 e f x f x displaystyle h 2 sqrt varepsilon f x over f x nbsp 8 不過f x 0時不成立 而且需要有關函數的資訊 上述的最小浮点数是針對雙精度 64 bit 變數 單精度變數在這類計算幾乎不太實用 其計算結果在二進制中不太可能是 整數 雖然x是可以用浮點數表示的數字 但x h幾乎不會也是可用浮點數表示 而且和x不同 的數字 因此x h需調整為機器可讀的數字 因此會出現 x h x不等於h的情形 因此用二個函數計算值計算微分時 二個位置的差不會是h 幾乎所有的十進制分數在二進制下都會是循環小數 都像1 3在十進制中的情形一様 例如h 0 1在二進制下會是循環小數 是 0 000110011001100 因此在浮點數下一個可能計算的方式是 h sqrt eps x xph x h dx xph x slope F xph F x dx 先計算 x h x的值 再用這個值作為微分算式的分母 不過若是用電腦計算 編譯器最佳化的機能可能會認為dx和h相同 因此讓上述的方式失效 若是用C或其他類似的程式語言 可以讓xph宣告成Volatile变量 以避免此一問題 高階方法 编辑 也有用更高階估計導數的方法 或是估計高階導數的方法 以下就是一階導數的五點法 一維下的五點模版 英语 five point stencil 9 f x f x 2 h 8 f x h 8 f x h f x 2 h 12 h h 4 30 f 5 c displaystyle f x frac f x 2h 8f x h 8f x h f x 2h 12h frac h 4 30 f 5 c nbsp 其中c x 2 h x 2 h displaystyle c in x 2h x 2h nbsp 微分求积 编辑微分求积 英语 Differential quadrature Differential quadrature 是用函數在特定位置數值的加權和來近似導數 10 11 其名稱類似數值積分中用的求积 quadrature 也就是像梯形法或是辛普森法中用的加權和 有許多方式可找出加權的係數 在求解偏微分方程時會用到微分求积 複變的方法 编辑傳統用有限差分近似數值微分的方式是病態的 不過若f displaystyle f nbsp 是全純函數 在實軸上的值都是實數 可以用複數平面中靠近x displaystyle x nbsp 的位置來求值 此方式為數值穩定的方式 例如 6 一階導數可以用以下的複數導數公式計算 12 f x ℑ f x i h h displaystyle f x approx Im f x ih h nbsp 上述公式只在計一階導數時有效 若要拓展到任意階導數 需要用到多重复数 結果也會是多重复数的導數 13 而任意階的導數可以用柯西積分公式計算 f n a n 2 p i g f z z a n 1 d z displaystyle f n a n over 2 pi i oint gamma f z over z a n 1 mathrm d z nbsp 其中積分會用數值積分計算 Lyness和Moler在1967年提出用複變數來計算數值微分 14 Abate和Dubner提出一種用複數拉普拉斯轉換的數值反演為基礎的算法 15 參考資料 编辑 Richard L Burden J Douglas Faires 2000 Numerical Analysis 7th Ed Brooks Cole ISBN 0 534 38216 9 Katherine Klippert Merseth Windows on Teaching Math Cases of Middle and Secondary Classrooms Teachers College Press 2003 34 ISBN 978 0 8077 4279 2 Tamara Lefcourt Ruby James Sellers Lisa Korf Jeremy Van Horn Mike Munn Kaplan AP Calculus AB amp BC 2015 Kaplan Publishing 2014 299 ISBN 978 1 61865 686 5 Andreas Griewank Andrea Walther Evaluating Derivatives Principles and Techniques of Algorithmic Differentiation Second Edition SIAM 2008 2 2016 07 03 ISBN 978 0 89871 659 7 原始内容存档于2016 07 29 Numerical Differentiation of Analytic Functions B Fornberg ACM Transactions on Mathematical Software TOMS 1981 6 0 6 1 Using Complex Variables to Estimate Derivatives of Real Functions W Squire G Trapp SIAM REVIEW 1998 Following Numerical Recipes in C Chapter 5 7 页面存档备份 存于互联网档案馆 p 263 1 页面存档备份 存于互联网档案馆 Abramowitz amp Stegun Table 25 2 Differential Quadrature and Its Application in Engineering Engineering Applications Chang Shu Springer 2000 ISBN 978 1 85233 209 9 Advanced Differential Quadrature Methods Yingyan Zhang CRC Press 2009 ISBN 978 1 4200 8248 7 Martins JRRA Sturdza P Alonso JJ The Complex Step Derivative Approximation ACM Transactions on Mathematical Software 2003 29 3 245 262 doi 10 1145 838250 838251 CiteSeerX 10 1 1 141 8002 nbsp 存档副本 PDF 2012 11 24 原始内容 PDF 存档于2014 01 09 Lyness J N Moler C B Numerical differentiation of analytic functions SIAM J Numer Anal 1967 4 202 210 doi 10 1137 0704019 Abate J Dubner H A New Method for Generating Power Series Expansions of Functions SIAM J Numer Anal March 1968 5 1 102 112 doi 10 1137 0705008 相關條目 编辑自動微分 差分 五点模板 英语 Five point stencil 數值積分 數值常微分方程 英语 Numerical ordinary differential equations Savitzky Golay濾波器 英语 Savitzky Golay filter 數值分析軟體列表 英语 List of numerical analysis software 外部連結 编辑http mathworld wolfram com NumericalDifferentiation html 页面存档备份 存于互联网档案馆 https web archive org web 20130820223117 http math fullerton edu mathews n2003 NumericalDiffMod html Numerical Differentiation Resources Textbook notes PPT Worksheets Audiovisual YouTube Lectures at Numerical Methods for STEM Undergraduate ftp math nist gov pub repository diff src DIFF 失效連結 Fortran code for the numerical differentiation of a function using Neville s process to extrapolate from a sequence of simple polynomial approximations NAG Library numerical differentiation routines 页面存档备份 存于互联网档案馆 http graphulator com 页面存档备份 存于互联网档案馆 Online numerical graphing calculator with calculus function 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title 數值微分 amp oldid 78294625, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。