實驗三數值積分程式設計演算法
1)實驗目的
通過本次實驗熟悉並掌握各種數值積分演算法及如何在matlab中通過設計程式實現這些演算法,從而更好地解決實際中的問題。
2)實驗題目
給出積分
1.用simpson公式和n=8的復合simpson公式求積分的近似值.
2.用復合梯形公式、復合拋物線公式、龍貝格公式求定積分,要求絕對誤差為 ,將計算結果與精確解做比較,並對計算結果進行分析。
3)實驗原理與理論基礎
simpson公式
復化梯形公式
將定積分的積分區間分隔為n等分,各節點為復合梯形(trapz)公式為
如果將分隔為2n等分,而不變,則其中,
n=1時,,則
若,記,
,則可得如下遞推公式
k=1,2,
即為梯形遞推公式。
由復化遞推公式的餘項
即為復化simpson公式。
romberg公式
由復合cotes公式的餘項得
令由此綜合可得
4)實驗內容
本次實驗需要通過在matlab中程式設計實現復化梯形及romberg等各種數值積分演算法,從而更加熟練的掌握這幾種演算法,也通過在matlab中的實現來比較這幾種演算法之間的優劣性,從而在實際應用中更好地選擇演算法,以利於解決實際中的問題。
5)實驗結果
simpson演算法
function z=simpson(a,b)
c=(a+b)/2;
z1=1/(a^2-1);z2=1/(b^2-1);z3=1/(c^2-1);
z=(b-a)*(z1+4*z3+z2)/6;
a=2;b=3;simpson(a,b)
ans =
0.2034
復合simpson演算法
function y=comsimpson(a,b,n)
z1=1/(a^2-1);z2=1/(b^2-1);
h=(b-a)/n;s1=0;x1=a+h/2;
s2=0;x2=a+h;
for i=0:1:(n-1)
x1=x1+h;
s1=s1+1/(x1^2-1);
endfor i=1:1:(n-1)
x2=x2+h;
s2=s2+1/(x2^2-1);
endy=h*(z1+4*s1+2*s2+z2)/6;
>> a=2;b=3;n=8;comsimpson(a,b,n)
ans =
0.1804
復合梯形公式
function y=comti(a,b,e)%復合梯形公式求解
z1=1/(a^2-1);z2=1/(b^2-1);
c=(a+b)/2;z3=1/(c^2-1);
t=abs(z3-z2-z1);z4=z3;n=2;
while (t>e)
n=n+1;
h=(b-a)/n;
x=a;
s1=z1+z2;
for i=1:n-1
x=a+i*h;
s1=s1+1/(x^2-1);
ends1=s1*h;
t=abs(s1-z4);z4=s1;
endy=s1;
復合拋物線公式求解
%復合拋物線公式求解
function y=compwx(a,b,e)
s=1/(a^2-1)+1/(b^2-1);c=(b-a)/2+a;z=1/(c^2-1);
s3=(s+4*z)*(b-a)/6;
r=abs(s3-s*(b-a)/6);
n=0;
while(r n=n+1;
h=(b-a)/(2*n);
x=a;
s1=s;
for i=1:2:(2*n-1)
x=x+h;
s1=s1+4*1/(x^2-1);
x=x+h;
s1=s1+2*1/(x^2-1);
ends2=s1*h/3;
r=abs(s2-s3);
s3=s2;
endy=s3;
romberg求積演算法
%龍貝格演算法
function[s,n]=romberg(a,b,eps)
if nargin<3,eps=1e-6;
endz1=1/(a^2-1);z2=1/(b^2-1);
s=10;s0=0;k=2;t(1,1)=(b-a)*(z1+z2)/2;
while (abs(s-s0)>eps)
h=(b-a)/2^(k-1);
w=0;
if(h~=0)
for i=1:(2^(k-1)-1)
x=a+i*h;
w=w+1/(x^2-1);
endt(k,1)=h*(z1/2+w+z2/2);
for l=2:k
for i=1:(k-l+1)
t(i,l)=(4^(l-1)*t(i+1,l-1)-t(i,l-1))/(4^(l-1)-1);
end end
s=t(1,k);
s0=(t(1,k-1));
k=k+1;
n=k;
else s=s0;
n=-k;
endend實驗結果
6)實驗結果分析與小結
通過本次實驗,在matlab中編寫程式實現復合simpson,復合梯形,復合拋物線及romberg演算法等,進一步熟悉了這幾種數值積分演算法,通過比較發現simpson演算法不穩定,而梯形法簡單但收斂慢,由梯形法遞推而得到的romberg演算法具有更高的收斂速度。
數值積分實驗報告
數學與計算科學學院 實驗報告 實驗專案名稱數值積分 所屬課程名稱數值計算 實驗型別驗證 實驗日期 2012年10月11日 班級學號 姓名成績 附錄1 源程式 附錄2 實驗報告填寫說明 1 實驗專案名稱 要求與實驗教學大綱一致。2 實驗目的 目的要明確,要抓住重點,符合實驗教學大綱要求。3 實驗原理 ...
微分方程數值方法實驗報告
一 實驗題目 1 用ritz galerkin方法求解邊值問題 精確解 2 用有限元方法求解 二 實驗目的 運用matlab數學軟體編寫ritz galerkin方法和有限元方法程式,進一步熟悉matlab的應用及掌握偏微分方程數值方法中ritz galerkin方法和有限元方法,對各個方法求解精度...
微分方程數值解法實驗報告
for k 2 n yp y k 1,h feval f,x k 1 y k 1,yc y k 1,h feval f,x k yp y k,yp yc 2 end 3 runge kutta method function tout,yout runge kutta f,ab,y0,h tout ...