[摘记]数值方法04——函数求值
注:以下來(lái)自《C++數(shù)值算法一書(shū)》,僅對(duì)章節(jié)內(nèi)容做摘要,為的是給自己掃盲,不涉及算法。
?
這里只討論一些最清晰明了的一般方法。
?
1. 級(jí)數(shù)與其收斂性
思想:解析函數(shù)可在某點(diǎn)x0的鄰域內(nèi)展開(kāi)成級(jí)數(shù):。用這個(gè)級(jí)數(shù)可以直接估值。對(duì)于通項(xiàng)的模是遞減的級(jí)數(shù),可以用艾肯特δ2過(guò)程加速收斂。對(duì)交錯(cuò)級(jí)數(shù)(和式中項(xiàng)的符號(hào)交替變化),歐拉變換是強(qiáng)大的工具。van Wijngaarden方法是歐拉變換的一個(gè)精巧的實(shí)現(xiàn)方式。
?
2. 連分式求值
思想:連分式可作為科學(xué)計(jì)算中求函數(shù)值的有效工具,連分式如下面的形式:
連分式通常比級(jí)數(shù)展開(kāi)收斂要快得多,并且收斂區(qū)域更大。求解連分式的兩個(gè)比較新的方法是Steed方法和改進(jìn)的Lentz方法。連分式可以做一些等價(jià)變化來(lái)加速數(shù)值運(yùn)算過(guò)程。連分式的奇部分和偶部分也是連分式,分別收斂到f2n和f2n+1。
?
3. 多項(xiàng)式和有理函數(shù)
略。。避免用最最直接的方法計(jì)算——p=c[0]+c[1]*x+c[2]*x*x+c[3]*x*x*x+c[4]*x*x*x*x;,而是用p=(((c[4]*x+c[3])*x+c[2])*x+c[1])*x+c[0]。
?
4. 復(fù)數(shù)運(yùn)算
復(fù)數(shù)的加減法很簡(jiǎn)單,但乘除運(yùn)算需要注意溢出。公式在書(shū)上。
?
5. 遞推關(guān)系與Clenshaw遞推公式
許多有用的函數(shù)滿足遞推關(guān)系,如勒讓德多項(xiàng)式、第一類(lèi)貝賽爾函數(shù)和指數(shù)積分以及三角函數(shù)。
Clenshaw遞推公式是計(jì)算求和式的一種優(yōu)秀而有效的方法,該和式是系數(shù)乘上遵循遞推公式的函數(shù)之積。
?
6. 二次方程和三次方程
二次方程的2個(gè)根上過(guò)中學(xué)的應(yīng)該都知道怎么求。。。三次的也不說(shuō)了,google知道的。
?
7. 數(shù)值求導(dǎo)
利用導(dǎo)數(shù)的定義,函數(shù)值之差除以步長(zhǎng),幾乎肯定得到的是不精確的結(jié)果。如非迫不得已不要考慮這種情況。
?
8. 切比雪夫逼近
n階切比雪夫多項(xiàng)式用Tn(x)表示,寫(xiě)成公式為:Tn(x)=Dcos(n arccos x)。我們可以用切比雪夫多項(xiàng)式來(lái)逼近函數(shù),然后用它的遞推式來(lái)求解。
如果得到了某一范圍內(nèi)逼近一個(gè)函數(shù)的切比雪夫系數(shù)之后,把它們變換成與該函數(shù)微分和積分相對(duì)應(yīng)的切比雪夫系數(shù)就很簡(jiǎn)單了。
?
(深入討論略)
?
9. 線積分求函數(shù)值
有時(shí)候你會(huì)發(fā)現(xiàn),對(duì)一個(gè)函數(shù)定義的微分方程直接積分,會(huì)得到效率更高的算法。
?
本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處
http://www.cnblogs.com/luluathena/
轉(zhuǎn)載于:https://www.cnblogs.com/luluathena/archive/2010/12/03/1895758.html
總結(jié)
以上是生活随笔為你收集整理的[摘记]数值方法04——函数求值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 美到极致是疯狂
- 下一篇: Hook KiUserException