計算方法第二次上機作業(yè)_第1頁
計算方法第二次上機作業(yè)_第2頁
計算方法第二次上機作業(yè)_第3頁
計算方法第二次上機作業(yè)_第4頁
計算方法第二次上機作業(yè)_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、計算方法第二次上機作業(yè)Gegebao摘要:程序基于MATLAB,包括問題陳述、算法與程序、結(jié)果與分析、討論四個部分。一 、問題陳述 數(shù)學(xué)上已經(jīng)證明了:0141+x2dx=成立,所以可以通過積分來計算的近似值。(1) 分別使用矩形、梯形和Simpson復(fù)合求積公式計算的近似值。選擇不同的h,對于每種求積公式,試將誤差刻畫成h的函數(shù),并比較各方面的精度。是否存在某個h值,當(dāng)?shù)陀谶@個值之后,再繼續(xù)減少h的值,計算不再有所改進(jìn)?為什么?(2) 實現(xiàn)Romberg求積方法,并重復(fù)上面的計算。(3) 使用自適應(yīng)求積方法重復(fù)上面的計算。二、 算法與程序1矩形求積法考慮到對于具體的某一個h,不一定能整數(shù)個地覆

2、蓋積分空間,將會嚴(yán)重地影響算法精度。于是我們用n代替h,即將積分區(qū)間劃分為n個區(qū)間,h=1/n。函數(shù)將輸出積分結(jié)果Rec和這個結(jié)果對于精確的的誤差的對數(shù)值r。function Rec r = rec( n ) h=1/n; %求出對應(yīng)的hRec=0;for i=1:n x0=h*(i-1/2); %求出每一區(qū)間的中心點的橫坐標(biāo) Rec=Rec+h*4/(1+x02);endr=log10(abs(Rec-pi); %取其誤差的對數(shù)end2.梯形求積法 和矩形法一樣,采用n來標(biāo)度取點密度。同樣輸出積分結(jié)果Lad和這個結(jié)果對于精確的的誤差的對數(shù)值r。function Lad r = lad( n)

3、 h=1/n;Lad=0;for i=1:n x0=h*(i-1); x1=x0+h; 取得每個區(qū)間的端點的橫坐標(biāo) Lad=Lad+h/2*(4/(1+x02)+4/(1+x12);endr=log10(abs(Lad-pi);end3.Simpson求積法 輸入取點數(shù)目n,h=1/n, 輸出積分結(jié)果Simp和這個結(jié)果對于精確的的誤差的對數(shù)值r。function Simp ,r = simp( n)h=1/n; Simp=0;for i=1:n x0=h*(i-1); x1=x0+h/2; x2=x1+h/2; Simp=Simp+h/6*(4/(1+x02)+4*4/(1+x12)+4/(1

4、+x22);endr=log10(abs(Simp-pi);end4.Romberg求積法 輸入最初取點數(shù)目n(h=1/n)和需求遞推下去的步數(shù)k, 輸出積分結(jié)果Rom和這個結(jié)果對于精確的的誤差的對數(shù)值r。function Rom,r = rom(n,k)for i=1:k; a(i,1) c=lad(2(i-1)*n); %調(diào)用lad函數(shù),求出遞推矩陣第一列的數(shù)值endfor i=2:k for j=1:k-i+1 a(j,i)=(a(j+1,i-1)-4(1-i)*a(j,i-1)/(1-4(1-i); endendRom=a(1 ,k);r=log10(abs(Rom-pi);end5.

5、分別基于前幾種算法的自適應(yīng)算法(1)基于矩形法 輸入初始的取點數(shù)n(h=1/n)和所需要的精度的對數(shù)值e,輸出積分結(jié)果對于精確的的誤差的對數(shù)值r。 function r = Arec(n,e)temp0=0;temp1=1; %temp0為T(h),Temp1為T(h/2)while(log10(abs(temp0-temp1)>e) temp0=temp1; n=n*2; temp1=rec(n);endr=log10(abs(temp1-pi);end (2)基于梯形法 輸入初始的取點數(shù)n(h=1/n)和所需要的精度的對數(shù)值efunction r = Alad( n,e)temp0=

6、0;temp1=1;while(log10(abs(temp0-temp1)>e) temp0=temp1; n=n*2; temp1=lad(n);endr=log10(abs(temp1-pi);end(3)基于Simpson法 輸入初始的取點數(shù)n(h=1/n)和所需要的精度的對數(shù)值efunction r = Asimp( n,e)temp0=0;temp1=1;while(log10(abs(temp0-temp1)>e) temp0=temp1; n=n*2; temp1=simp(n);endr=log10(abs(temp1-pi);end(4)基于Romberg法 輸

7、入初始的取點數(shù)n(h=1/n)和所需要的精度的對數(shù)值e,取遞推步數(shù)k=5function r = Arom( n,e)temp0=0;temp1=1;while(log10(abs(temp0-temp1)>e) temp0=temp1; n=n*2; temp1=rom(n,5);endr=log10(abs(temp1-pi);end三、結(jié)果與分析使用之前的積分函數(shù)進(jìn)行運算??紤]到h的變化范圍比較大,將h等比例地從1取到10(-7),取200個點。最后將h和誤差按對數(shù)輸出成圖像。1.矩形積分法運行代碼: for i=1:200 h0(i)=-i*7/200; n=fix(10(-h0

8、(i); r Rrec(i)=rec(n); endplot(h0,Rrec,'b');分析:求積方法的最高精度可以達(dá)到10(-14)到10(-15)之間,而當(dāng)h取到10(-6)時,繼續(xù)提高取點密度對算法精度沒有改進(jìn)。而在此之前,精度和h的關(guān)系幾乎是線性的。2.梯形求積法運行代碼:for i=1:200 h0(i)=-i*7/200; n=fix(10(-h0(i); r Rlad(i)=lad(n);endplot(h0,Rlad,'b');分析:求積方法的最高精度可以達(dá)到10(-14)到10(-15)之間,而當(dāng)h取到10(-6)時,精度隨h取小開始波動,繼續(xù)

9、減小h并不能保證精度的增加。而在此之前,精度和h的關(guān)系幾乎是線性的。3.Simpson求積法運行代碼:for i=1:200 h0(i)=-i*7/200; n=fix(10(-h0(i) r Rsimp(i)=simp(n);endplot(h0,Rsimp,'b');分析:求積方法的最高精度可以達(dá)到10(-15)到10(-16)之間,而當(dāng)h取到10(-2)時,精度隨h取小開始波動,繼續(xù)減小h并不能保證精度的增加。而在此之前,精度和h的關(guān)系幾乎是線性的。圖像上存在間斷點,實際上是由于求積方法的精度已經(jīng)超過MATLAB所給出的值,計算機得到的誤差為零,求對數(shù)運算無意義,故出現(xiàn)間

10、斷點。4.三種算法的精度比較在進(jìn)行前三個積分法的運算的時候,已經(jīng)分別記錄了結(jié)果,直接輸出就行。運行代碼:plot(h0,Rrec,'b');hold on;plot(h0,Rlad,'r');hold on;plot(h0,Rsimp,'k');hold on;分析:對于相同的h值,在很長的范圍內(nèi),Simpson的精度明顯高于另兩種算法,而矩形法又比梯形法略優(yōu)。三種算法的極限精度以Simpson為最好,可以達(dá)到10(-15)到10(-16)之間。5Romberg積分法(固定遞推步數(shù)為5,基于梯形算法)運行代碼:k=5for i=1:200 h0(

11、i)=-i*7/200; n=fix(10(-h0(i) r Rrom(i)=rom(n,k);endplot(h0,Rrom,'b');分析:可以看出,積分精度隨h減小提高地非常快。在(-1,0)這個區(qū)間里,便出現(xiàn)了間斷點,說明算法的精度已經(jīng)達(dá)到MATLAB所能達(dá)到的精度,從而誤差變?yōu)榱悖髮?shù)運算無意義,出現(xiàn)間斷點??v觀函數(shù),最高精度應(yīng)在10(-15)到10(-16)之間。6.自適應(yīng)算法(取自適應(yīng)精度為10(-10)):(1)基于矩形算法 運行代碼:for i=1:200 h0(i)=-i*7/200; n=fix(10(-h0(i) Rarec(i)=Arec(n,-10

12、);endplot(h0,Rarec,'b');(2)基于梯形算法:運行代碼:for i=1:200 h0(i)=-i*7/200; n=fix(10(-h0(i) Ralad(i)=Alad(n,-10);endplot(h0,Ralad,'b');(3)基于Simpson算法 運行代碼:for i=1:200 h0(i)=-i*7/200; n=fix(10(-h0(i) Rasimp(i)=Asimp(n,-10);endplot(h0,Rasimp,'b');(4)基于Romberg算法( 固定遞推步數(shù)為五步) 運行代碼:for i=1:

13、200 h0(i)=-i*7/200; n=fix(10(-h0(i) Rarom(i)=Arom(n,-10);endplot(h0,Rarom,'b');分析:當(dāng)本來的算法精度低于所給出的自適應(yīng)精度時,自適應(yīng)算法對本來算法的精度是有改進(jìn)作用的,并使算法精度略高于所給出的自適應(yīng)精度。但是當(dāng)算法對于具體的h得到的結(jié)果的精度高于自適應(yīng)給出的精度時,自適應(yīng)算法則對原本的算法無改進(jìn)作用。而且有些算法的精度隨h的減小提高得特別快(比如說Romberg算法),使用自適應(yīng)算法后算法精度會明顯高于給出的自適應(yīng)精度。四、討論 算法的精度主要取決于算法本身、h的大小和機器誤差。幾種算法的精確程度不同,但都要受制于機器本身的誤差,不可能無限地提高精度。當(dāng)然,并不是說

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論