上節(jié)課主要介紹了計算微分的幾種數(shù)值方法泳桦,對一階微分澈侠,最簡單的莫過于兩點前向差分桥言、后向差分和中心差分這三種方法延旧,其中中心差分的精度最高谋国,這三種差分公式都可以通過推導(dǎo)泰勒展開式得到,而通過泰勒展開式還可以推導(dǎo)出三點前向差分和三點后向差分迁沫。對二階微分芦瘾,則可以推導(dǎo)出三點中心差分、三點前向差分弯洗、三點后向差分公式旅急。這些數(shù)值方法均可以推廣到數(shù)值偏微分的領(lǐng)域,且對于兩個精度不高的數(shù)值算法牡整,還可以使用Richardson外推加速算法得到一個精度更高的算法藐吮。本節(jié)課主要介紹計算積分的數(shù)值方法。
1. 矩形和中點法
區(qū)間上的積分表示的是曲線在內(nèi)的面積逃贝,若將分解為個小區(qū)間:谣辞,區(qū)間內(nèi)的面積可以估算為一個黎曼和:,其中表示內(nèi)的某個點沐扳,泥从,此時積分即為黎曼求和的極限: 其中
1.1 左點法與右點法
左點法是一種矩形法,每個小區(qū)間的面積使用矩形公式來計算沪摄,其中高取為區(qū)間左端點的函數(shù)值躯嫉,寬取為小區(qū)間的長度,
右點法與左點法相對,高取為右端點的函數(shù)值杨拐,
1.2 中點法
中點法使用區(qū)間的中點函數(shù)值作為高祈餐,區(qū)間的面積為:
下面以線性函數(shù)為例,討論如何控制左點法的結(jié)果在想要的誤差范圍內(nèi)哄陶。區(qū)間取為帆阳,在該區(qū)間上積分的真實值為,利用左點法計算屋吨,將等分為個小區(qū)間蜒谤,每個小區(qū)間的寬度為山宾,左點法計算的積分值為: 計算誤差為,如果想要將誤差的量級控制在以內(nèi)鳍徽,則 至少需要將區(qū)間分為個小區(qū)間资锰。而在該例中,中點法計算是沒有誤差的阶祭。
2. 梯形法(Trapezoidal Method)
梯形法是對矩形法的一種改善台妆,采用線性函數(shù)來計算積分,對點和進行牛頓插值胖翰,得到: 將區(qū)間的積分值計算為梯形面積,有: 對區(qū)間進行劃分切厘,則:
MATLAB實現(xiàn):
function I = trapezoidal(Fun,a,b,N)
% trapezoidal numerically integrate using the Composite Trapezoidal Method.
% Input Variables:
% Fun Name for the function to be integrated.
% (Fun is assumed to be written with element-by-element calculations.).
% a Lower limit of integration.
% b Upper limit of integration.
% N Number of subintervals.
% Output Variable:
% I Value of the integral.
h = (b-a)/N;
x=a:h:b;
F=Fun(x);
I=h*(F(1)+F(N+1))/2+h*sum(F(2:N));
3. Simpson 方法
3.1 Simpson 1/3 法
梯形法是采用線性函數(shù)插值萨咳,來估算區(qū)間面積,一種改進方法是使用非線性插值疫稿,包括二次插值培他、三次插值。Simpson 1/3 法采用二次插值法遗座。
取區(qū)間內(nèi)的三點舀凛,使用牛頓多項式插值法,過這三個點的曲線方程為: 求解可得 , 使用曲線代替原曲線計算積分途蒋,
現(xiàn)在將區(qū)間等分成(偶數(shù))個小區(qū)間:猛遍,則區(qū)間內(nèi)的積分值為:
對所有小區(qū)間積分值求和,有:
3.2 Simpson 3/8 法
在Simpson 3/8 法中号坡,對每四個點進行三次插值:
4. 高斯求積
前面幾種算法一般要求小區(qū)間的寬度相同宽堆,即將區(qū)間等距劃分腌紧,高斯法則不要求等距,其一般形式為: 其中為點對應(yīng)的權(quán)重畜隶,點是待定的高斯點”诶撸現(xiàn)在考慮區(qū)間: 對的情況,有: 這是一組非線性方程籽慢,存在無數(shù)個解浸遗,因此,額外提出對稱性要求嗡综,即乙帮,則可求解得: 即 同樣地,可以推導(dǎo)出的情況极景,當越大時察净,計算的精度越高驾茴。下表給出了時,對應(yīng)的高斯點和權(quán)重:
上述推導(dǎo)過程是以區(qū)間為例氢卡,對積分區(qū)間锈至,可以通過如下線性變換,將積分區(qū)間變換為:
5. 總結(jié)
本節(jié)課主要介紹函數(shù)積分的數(shù)值算法译秦,最簡單的有矩形法(左右點法)和中點法峡捡,在中點法的基礎(chǔ)上,線性插值法提供了一種梯形求解算法筑悴,而采用非線性插值们拙,則可以推導(dǎo)出Simpson 1/3 法和 3/8 法。這幾種算法都要求對區(qū)間等距劃分阁吝,最后介紹的高斯求積法則是確定高斯點和相應(yīng)的權(quán)重來直接計算積分值砚婆。與數(shù)值微分類似,在數(shù)值積分算法中突勇,也可以用Richardson外推加速算法將兩個精度不高的方法組合構(gòu)建出一個精度更高的數(shù)值積分算法装盯,這里不做詳細討論,包括多重積分甲馋、多元積分等相關(guān)知識埂奈,這里暫不做深入研究,如果后面要使用定躏,再進一步討論账磺。至此,暑期學(xué)校數(shù)值方法與計算課程的內(nèi)容已經(jīng)整理完畢共屈。原本打算兩周內(nèi)整理好绑谣,后來因為各種事情耽擱了,以后盡量避免長線作戰(zhàn)拗引,趁熱打鐵方能加深印象借宵。