matlab用辛普森公式求积分_数值计算实验9 数值积分实验
實驗9 數值積分實驗
成績 |
實驗類型:●驗證性實驗? ○綜合性實驗? ○設計性實驗
實驗目的:進一步熟練掌握變步長數值積分算法,提高編程能力和解決定積分問題的實踐技能。
實驗內容:用龍貝格積分算法計算
實驗原理
實驗算例中a=0,b=1,f(x)=x2 .
T(0)=(b-a)(f(a)+f(b))/2 ; H(0) =(b-a)·f( (a+b)/2 ) ; T(i)=(T(i-1)+H(i-1))/2
T(i)的語義是將積分區間做2i 等分復化梯形求積分公式算出的近似值。
H(i)的語義是將積分區間做2i 等分時,將每個小區間的長度乘該小區間中點處函數值的乘積進行累加求和的結果。
龍貝格積分算法:生成i>=j 的積分近似值表R(i, j)具體計算如下:.
R(i,0)=T(i)=(T(i-1)+H(i-1))/2, i>=0,T(i)為區間逐次減半遞推梯形求積分公式算出的結果;?
R(i,1)=S(i), i>=1,S(i)為由T(i)、T(i-1)聯合遞推得出的區間逐次減半遞推辛普森求積分公式算出的結果;
R(i,2)=B(i), i>=2,B(i)為由S(i)、S(i-1)聯合遞推得出布爾求積分公式算出的結果;
,,,,,,,,,,;歸納總結有如下遞推關系式
?
由上面遞推關系式計算積分近似值R(i, j)構成三角表,循環結束條件:|R(i, i)-R(i-1, i-1)|<< span="">成立時,則以R(i, i)作為最終的積分近似值,否則繼續循環計算。這一算法叫龍貝格積分算法,
實驗步驟
1 要求上機實驗前先編寫出程序代碼
2 編輯錄入程序
3 調試程序并記錄調試過程中出現的問題及修改程序的過程
4 經反復調試后,運行程序并驗證程序運行是否正確。
5 記錄運行時的輸入和主要中間結果輸出,以便與手工解算作比較。
6 要求在A4紙上手工計算并和計算機程序計算的主要中間結果進行比較,驗證手工解算和機器解算的R(i, j)構成三角表是否一致。
實驗報告:根據實驗情況和結果撰寫并遞交實驗報告。
實驗總結 (學會了......; 掌握了......; 訓練了......; 發現了......; 今后學習中......有待提高。)
程序代碼(MATLAB程序,必須自己獨立編程)
電子報告word文件命名規則:專業班級-學號后兩位-實驗X-姓名.doc, 如信息123班學號為201212030315的郭海濤同學實驗9報告word文件命名則應是:信息123-15-實驗9-郭海濤.doc, 其中 .doc是Word文件擴展名。特別提醒:電子報告文件命名不規范的報告將不予接收。
一、實驗代碼
function s = maromb(fun,a,b,tol)
%用龍貝格公式求積分
%格式:s = maromb(fun,a,b,tol),fun 是被積函數,a,b是積分
%下、上限,tol 是容許誤差,s 是返回積分近似值
if nargin < 4,tol = 1e-4;end
i = 1;j = 1;h = b - a;
T(1,1) = h * (feval(fun,a) + feval(fun,b)) / 2;
T(i+1,j) = T(i,j)/2 + sum(feval(fun,a + h/2:h:b - h/2)) * h/2;
T(i+1,j+1) = (4^j * T(i+1,j) - T(i,j)) / (4^j - 1);
while (abs(T(i+1,i+1) - T(i,i)) > tol)
??? i?= i+1;
??? h?= h/2;
??? T(i+1,1)?= T(i,1)/2 + sum(feval(fun,a + h/2:h:b - h/2)) * h/2;
??? for?j = 1:i
??????? T(i+1,j+1)?= (4^j * T(i+1,j) - T(i,j)) / (4^j - 1);
??? end
end
T
s = T(i+1,j+1);
運行結果:
????? >> fun = inline('x.^2');
????? >> a = 0;
>> b = 1;
>> tol = 1e-5;
>> s = maromb(fun,a,b,tol)
T =
??? 0.5000???????? 0???????? 0
??? 0.3750??? 0.3333???????? 0
??? 0.3438??? 0.3333??? 0.3333
s =
??? 0.3333
二、實驗總結
????? 通過本次實驗我學會了使用龍貝格公式求積分的算法程序;掌握了使用龍貝格算法求解積分的本領;訓練了我的編程的能力和把數學問題轉化為算法的能力;在本次實驗中我發現了自己在編程方面和思考問題方面的一些不足;在今后的學習中我的編程能力和編寫算法的能力有待提高。
總結
以上是生活随笔為你收集整理的matlab用辛普森公式求积分_数值计算实验9 数值积分实验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java andequal_Java e
- 下一篇: 解决Windows Update错误“8