數值積分與數值微分實驗報告

2022-05-11 03:49:07 字數 2792 閱讀 3119

實驗三數值積分程式設計演算法

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 ...