数值分析实验 4

发布 2023-04-19 12:53:28 阅读 8989

实验四数值积分与数值微分

专业班级:信计131班姓名:段雨博学号:2013014907

一、实验目的。

1、熟悉matlab编程。

2、学习数值积分程序设计算法。

3、通过上机进一步领悟用复合梯形、复合辛普森公式,以及用龙贝格求积方法计算积分的原理。

二、实验题目。

p1371、用不同数值方法计算积分。

1)取不同的步长。分别用复合梯形及复合辛普森求积计算积分,给出误差中关于的函数,并与积分精确值比较两个公式的精度,是否存在一个最小的,使得精度不能再被改善?

2)用龙贝格求积计算完成问题(1)。

三、实验原理与理论基础。

1.1复合梯形公式及其复合辛普森求解。

误差关于h的函数:

复合辛普森公式:

误差关于h的函数:

1.2龙贝格求积算法:

龙贝格求积公式是梯形法的递推化,也称为逐次分半加速法,它是在梯形公式、辛普森公式和柯特斯公式之间的关系的基础上,构造出一种计算积分的方法,同时它有在不断增加计算量的前提下提高误差的精度的特点。

计算过程如下:

1)取,求:

2)求梯形值即按递推公式计算。

3)求加速值,按公式逐个求出t表的地k行其余各元素。

4)若(预先给定的精度),则终止计算,并取转(2)继续计算。

t表。上表指出了计算过程,第二列给出了子区间长度,i表示第i步外推。

可以证明,如果充分光滑,那么t表每一列的元素及对角线元素均收敛到所求的积分。

四、实验内容。

程序设计如下:

1、复合梯形法m文件:

function t=natrapz(fname,a,b,n)

h=(b-a)/n;

fa=feval(fname,a);fb=feval(fname,b);f=feval(fname,a+h:h:b-h+0.001*h);

t=h*(0.5*(fa+fb)+sum(f));

2、复合辛普森法m文件:

function t=natrapz(fname,a,b,n)

h=(b-a)/n;

fa=feval(fname,a);fb=feval(fname,b);f1=feval(fname,a+h:h:b-h+0.001*h);

f2=feval(fname,a+h/2:h:b-h+0.001*h);

t=h/6*(fa+fb+2*sum(f1)+4*sum(f2));

3、龙贝格算法m文件:

function [i,step]=roberg(f,a,b,eps)

if(nargin==3)

eps=1.0e-4;

end;m=1;

tol=10;

k=0;t=zeros(1,1);

h=b-a;

t(1,1)=(h/2)*(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b));

while tol>eps

k=k+1;

h=h/2;

q=0;for i=1:m

x=a+h*(2*i-1);

q=q+subs(sym(f),findsym(sym(f)),x);

endt(k+1,1)=t(k,1)/2+h*q;

m=2*m;

for j=1:k

t(k+1,j+1)=t(k+1,j)+(t(k+1,j)-t(k,j))/4^j-1);

endtol=abs(t(k+1,j+1)-t(k,j));

endi=t(k+1,k+1);

step=k;

1、复合梯形法运行:

> format long;natrapz(inline('sqrt(x).*log(x)')eps,1,10),format short;ans =

> format long;natrapz(inline('sqrt(x).*log(x)')eps,1,100),format short;ans =

> format long;natrapz(inline('sqrt(x).*log(x)')eps,1,1000),format short;ans =

2、复合辛普森法运行:

> format long;natrapzz(inline('sqrt(x).*log(x)')eps,1,10),format short;ans =

> format long;natrapzz(inline('sqrt(x).*log(x)')eps,1,100),format short;ans =

> format long;natrapzz(inline('sqrt(x).*log(x)')eps,1,1000),format short;ans =

3、龙贝格算法运行:

> [q,s]=roberg('sqrt(x)*log(x)',0.0000001,1)q =

s =五、实验结果。

1、复合梯形法结果:

> format long;natrapz(inline('sqrt(x).*log(x)')eps,1,10),format short;ans =

> format long;natrapz(inline('sqrt(x).*log(x)')eps,1,100),format short;ans =

> format long;natrapz(inline('sqrt(x).*log(x)')eps,1,1000),format short;ans =

2、复合辛普森法结果:

> format long;natrapzz(inline('sqrt(x).*log(x)')eps,1,10),format short;ans =

> format long;natrapzz(inline('sqrt(x).*log(x)')eps,1,100),format short;ans =

> format long;natrapzz(inline('sqrt(x).*log(x)')eps,1,1000),format short;ans =

3、龙贝格算法结果:

> [q,s]=roberg('sqrt(x)*log(x)',0.0000001,1)q =

s =实验结论:对比以上的计算结果可得:复合辛普森法求积分精度明显比复合梯形法求积的精度要高,且当步长取不同值时,即越大,越小时,积分精度越高。

实验结果说明不存在一个最小的,使得精度不能再被改变。由两个相应的关于的误差余项,,其中,可知愈小,余项愈小,积分精度越高。

六、实验结果分析与小结。

1、通过这次实习,加深了对复合梯形法、复合辛普森法和龙贝格法的理解,之前学习这三个算法时觉得特别麻烦,公式那么长,而且不是很理解。这次实习对三种算法的编程,对三种算法进行详细地分析,现在理解了算法的过程。在编写函数程序的过程中也在不断地提高和改进,有些虽然不是很熟,也不太清楚到底怎么做,但是查阅了之后就懂了。

2、在编写程序,进行算法设计还是会出现很大问题,有程序运行不出来修改也是很麻烦,而且由于之前对算法的掌握不是很好,所以反复仔细看了课本上的算法才进行编写。对matlab的认识和熟悉程度也不够,在课下也是很少在matlab下运行程序啊什么,对matlab的很多东西都不懂,也不知道怎么用,虽然知道用matlab解决问题很方便,可是由于时间和条件的限制,平时很少接触。以后好好利用实习的时间熟悉matlab。

数值分析实验

数值分析实验报告。一 实验目的。1 掌握gauss顺序消去和选列主元消去解线性方程组基本原理和方法。2 用matlab编写程序实现gauss顺序消去和选列主元消去解线性方程组。二 实验内容。1.用lu分解及列主元高斯消去法解线性方程组。输出中系数分解的矩阵,解向量及。二 1 gauss顺序消去和选列...

数值分析实验册封面格式

数值分析 计算实习报告册。专业。学号。姓名。2011 2012年第二学期。计算实习题一。第2章插值法。50页第3题。下列数据点的插值。可以得到平方根函数的近似,在区间 0,64 上作图。1 用这9个点做8次多项式插值。2 用三次样条 第一边界条件 程序求s x 从得到结果看在 0,64 上,哪个插值...

数值分析上机实验报告

题目 函数逼近 曲线拟合。目的 掌握曲线拟合基本使用方法。数学原理 p,s polyfit x,y,3 其中x,y为取样值,3为得出的结果的最高次数。p为对应次数的系数,s为误差值向量,其中x,y是等长的向量,p是一个长度为 m 1的向量。结果分析和讨论 23.观察物体的运动,得出时间t与距离s的关...