資源描述:
《數(shù)值分析課程設(shè)計(jì)baogao》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、數(shù)值分析課程設(shè)計(jì)報(bào)告專業(yè)課程設(shè)計(jì)成績(jī)?cè)u(píng)定書指導(dǎo)教師評(píng)語(yǔ)成績(jī):指導(dǎo)教師時(shí)間:答辯小組意見(jiàn)設(shè)計(jì)成績(jī):答辯組長(zhǎng):12審定系主任:題目:用熟悉的計(jì)算機(jī)語(yǔ)言編程上機(jī)完成(1)用Newton-Cotes公式計(jì)算積分的近似值,自己設(shè)置不同精度要求,對(duì)結(jié)果進(jìn)行比較分析。(2)用Romberg積分法計(jì)算積分的近似值,自己設(shè)置不同精度要求,對(duì)結(jié)果進(jìn)行比較分析;與(1)的結(jié)果進(jìn)行比較分析,談?wù)勀愕捏w會(huì)。(3)記,在上面的計(jì)算中只取4位有效數(shù)字或7位有效數(shù)字,計(jì)算結(jié)果有什么不同。(4)上面計(jì)算精度可達(dá)8-20位有效數(shù)字嗎?若可以請(qǐng)說(shuō)明實(shí)現(xiàn)過(guò)程,并舉
2、例。一.摘要:在matlab環(huán)境下熟悉的運(yùn)用計(jì)算機(jī)編程語(yǔ)言并結(jié)合Newton-Cotes和Romberg的理論基礎(chǔ)對(duì)函數(shù)求積分,在運(yùn)行完程序后以及對(duì)運(yùn)行結(jié)果做出各方面的分析和比較。二.實(shí)驗(yàn)設(shè)計(jì)目地用熟悉的計(jì)算機(jī)語(yǔ)言編程上機(jī)完成Newton-Cotes公式計(jì)算積分和Romberg積分法計(jì)算積分。三.Newton-Cotes和Romberg的理論基礎(chǔ)牛頓柯斯特公式12:設(shè)將積分區(qū)間[a,b]劃分為n等份,步長(zhǎng)h=(b-a)/n,選取等距節(jié)點(diǎn)=a+kh構(gòu)造出的插值型求積分公式I,稱為牛頓—柯斯特(Newton-Cotes)公式,式
3、中稱為柯特斯系數(shù),引進(jìn)變換x=a+th,則有龍貝格求積公式:(1).梯形法的遞推化設(shè)將區(qū)間[a,b]分為n等份,共有n+1個(gè)分點(diǎn),如果將求積區(qū)間再二分一次,則分點(diǎn)增至2n+1個(gè),我們將二分前后兩人積分值聯(lián)系起來(lái)加以考察,注意到每個(gè)子區(qū)間[]經(jīng)過(guò)二分只增加了一個(gè)分點(diǎn),用復(fù)合梯形公式求得該子區(qū)間上的積分值為,注意,這里h=(b-a)/n代表二分前的步長(zhǎng),將每個(gè)子區(qū)間上的積分值相加得,從而利用上式可導(dǎo)出下列遞推分式:(2).外推技巧從梯形公式出發(fā),將區(qū)間[a,b]逐次二分可提高求積公式精度,當(dāng)[a,b]分為n等份I若記,當(dāng)區(qū)間[a
4、,b]分為2n等份時(shí),則有,并且有I.(3).龍貝格算法將上述外推技巧得到的公式重新引入記號(hào)等從而可將上述公式定成統(tǒng)一形式經(jīng)過(guò)m(m=1.2.3……)次加速后,余項(xiàng)便取下列形式:12這方法通常稱為理查森外推加速方法。設(shè)以表示二分次后求得的梯形值,且以表示序列{}的m次加速值,則依遞推公式可得公式也稱為龍貝格算法,計(jì)算過(guò)程如下:ⅰ.取k=0,h=b-a,求令(k記區(qū)間[a,b]二分次數(shù))ⅱ.求梯形值,即按遞推公式計(jì)算ⅲ.求加速值,按公式a逐個(gè)求出T表的第k行其余各元素T(j=1,2,…,k).iv.若
5、T—T
6、<(預(yù)先設(shè)定的精
7、度),則終止計(jì)算,并取TI;否則令k+1k轉(zhuǎn)(2)繼續(xù)計(jì)算.kh…0b-a…1①…2②③…3④⑤⑥…4⑦⑧⑨⑩……T表12表指出了計(jì)算過(guò)程,第2列h=給出了子區(qū)間長(zhǎng)度,i表示第i步外推.可以證明,如果f(x)充分光滑,那么T表每一列的元素及對(duì)角線元素均收斂到所要求的積分值I.四.程序代碼及運(yùn)行結(jié)果牛頓柯斯特求積分:functiony=mulNewtonCotes(a,b,m,n)fun=@(x)exp(-x.^2);xk=linspace(a,b,m+1)fori=1:ms(i)=NewtonCotes(fun,xk(i),
8、xk(i+1),n);endy=sum(s);function[y,Ck,Ak]=NewtonCotes(fun,a,b,n)%fun=@(x)exp(-x.^2)ifnargin==1[mm,nn]=size(fun);ifmm>=8errorendxk=fun(1,:);fk=fun(2,:);a=min(xk);b=max(xk);n=mm-1;endifnargin==412xk=linspace(a,b,n+1);ifisa(fun,'function_handle')fx=fun(xk);endendCk=cot
9、escoeff(n);Ak=(b-a)*Ck;y=Ak*fx';functionCk=cotescoeff(n)fori=1:n+1k=i-1;Ck(i)=(-1)^(n-k)/factorial(k)/factorial(n-k)/n*quadl(@(t)intfun(t,n,k),0,n);endfunctionf=intfun(t,n,k)f=1;fori=[0:k-1,k+1:n]f=f.*(t-i);end運(yùn)行結(jié)果>>y=mulNewtonCotes(0,1,2,1)xk=00.50001.000012y=0.73
10、14>>vpa(y,7)ans=.>>y=mulNewtonCotes(0,1,5,2)xk=00.20000.40000.60000.80001.0000y=0.7468>>vpa(y,7)ans=.>>龍貝格求積分functionz=romberg(a,b,e)12h=(b-a);f=