数值分析作业

发布 2022-08-27 20:07:28 阅读 3775

数值积分的matlab的实现。

一、课题名称。

选用复合梯形公式,复合simpson公式,romberg算法,计算。

1)i =

2)i =

3)i =

4) i =

二、要求。1、编制数值积分算法的程序;

2、分别用两种算法计算同一个积分,并比较其结果;

3、分别取不同步长,试比较计算结果(如n = 10, 20等);

4、﹡给定精度要求,试用变步长算法,确定最佳步长﹡。

三、目的和意义。

1、深刻认识数值积分法的意义;

2、明确数值积分精度与步长的关系;

3、根据定积分的计算方法,可以考虑二重积分的计算问题。

四、内容。1、复合梯形公式:

1、 复合simpson公式:

3、romberg公式:

五、matlab编程:

将以下程序录入matlab的editor窗口中,保存为*.m函数文件。

1、复合梯形公式编程如下:

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

f 被积函数。

a,b 积分上下限。

eps 精度。

i 积分结果。

step 积分的子区间数。

if(nargin ==3)

eps=1.0e-4;

endn=1;

h=(b-a)/2;

i1=0;i2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))/h;

while abs(i2-i1)>eps

n=n+1;

h=(b-a)/n;

i1=i2;

i2=0;for i=0:n-1

x=a+h*i;

x1=x+h;

i2=i2+(h/2)*(subs(sym(f),findsym(sym(f)),x)+subs(sym(f),findsym(sym(f)),x1));

endend

i=i2;step=n;

2、复化simpson公式编程如下:

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

f为函数, a为积分上限, b为积分下限, eps为积分精度。

step为划分区间个数。

if(nargin==3)

eps=1.0e-4;

endn=2;

h=(b-a)/2;

i1=2;i2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))/h;

while abs(i2-i1)>eps

n=n+1;

h=(b-a)/n;

i1=i2;

i2=0;for i=0:n-1

x=a+h*i;

x1=x+h;

i2=i2+(h/6)*(subs(sym(f),findsym(sym(f)),x)+.

4*subs(sym(f),findsym(sym(f)),x+x1)/2)+.

subs(sym(f),findsym(sym(f)),x1));公式。

endi=i2;

step=n;

end3、龙贝格求积公式编程如下:

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、i =1.1用复合梯形求积公式:

在matlab的command window中键入如下内容:

combinetraprl('sqrt(4-sin(x)*sin(x))'0,0.25,1e-4)

回车结果为:ans =

1e-4以及同类型表示在本文中表示积分精度,以下不作重复解释。

1.2用复化simpson公式:

在matlab的command window中键入如下内容:

simpson('sqrt(4-sin(x)*sin(x))'0,1/4,1e-4)

回车结果为:ans =

由以上计算结果知道用复合梯形求积公式求的的结果比用复和simpson求的的结果要小0.0001.(0.4986-0.4987=-0.0001)。

2、i =

2.1用复合梯形求积公式:

在matlab的command window中键入如下内容:

combinetraprl('sin(x)/x',0,1,1e-4)

回车结果:warning: divide by zero.

in at 126

in combinetraprl at 13

ans =nan

经过分析认为是除数出现了0,所以出现以上结果。为了避免出现这种结果故将积分区间中的0改为0.0001。

重新在matlab的command window中键入如下内容:

combinetraprl('sin(x)/x',0.0001,1,1e-4)

回车结果为:ans =

2.2用复化simpson公式:

在matlab的command window中键入如下内容:

simpson('sin(x)/x',0,1,1e-4)

回车结果为:

warning: divide by zero.

in at 126

in simpson at 13

经过分析认为是除数**现了0, 所以出现以上结果。为了避免出现这种结果故将积分区间中的0改为0.0001。

重新在matlab的command window中键入如下内容:

simpson('sin(x)/x',0.0001,1,1e-4)

回车结果:ans =

由以上计算结果知道用复合梯形求积公式求的的结果比用复和simpson求的的结果要小0.0003.(0.9457-0.9460=-0.0003)

3、i =

3.1用复合梯形求积公式:

在matlab的command window中键入如下内容:

combinetraprl('exp(x)/(4+x^2)',0,1,1e-4)

回车结果:ans =

3.2用romberg算法:

在matlab的command window中键入如下内容:

roberg('exp(x)/(4+x^2)',0,1,1e-4)

回车结果:ans =

由以上计算结果知道用复合梯形求积公式求的的结果比用romberg算法求的的结果要大0.0002.(0.3910-0.3908=0.0002)

4 、i =

4.1用复化simpson公式:

在matlab的command window中键入如下内容:

simpson('log(1+x)/(1+x^2)',0,1,1e-4)

回车结果;ans =

4.2用romberg算法:

在matlab的command window中键入如下内容:

roberg('log(1+x)/(1+x^2)',0,1,1e-4)

回车结果:ans =

两种算法结果一样,那么用复合梯形求积公式试一试:

在matlab的command window中键入如下内容:

combinetraprl('log(1+x)/(1+x^2)',0,1,1e-4)

回车结果:ans =

由计算结果可以看出,用复合梯形求积公式计算的结果比用simpson公式求积分和romberg算法少了0.0005.(0.2722-0.2717=0.0005)

但是修改一下积分精度,在在matlab的command window中键入如下内容:

combinetraprl('log(1+x)/(1+x^2)',0,1,1e-6),即将积分精度由“1e-4”改为“1e-6”。回车结果为:

ans = 0.2722

由上面计算可以看出,。

七、分别取不同步长计算并进行讨论。

为了提高精度通常可把积分区间分成若干子区间(通常是等分)再在每个子区间上用低阶求积公式。下面分别讨论在不同步长的情况下积分。以用复合梯形求积公式为例。

根据复化梯形公式余项:来确定步长,以此来确定n。

1、i =

在matlab的command window中键入如下内容:

combinetraprl('sqrt(4-sin(x)*sin(x))'0,0.25,1e-4)。

回车结果为:ans =

0.4986。此时的积分精度为1e-4(1×10).

步长:h=。根据复化梯形公式余项计算,此时取n=3,步长h≈0.

0833。才可以达到这样的精度。由上面的计算,我们可以看出来,复合梯形积分的精度相比复合simpson公式,romberg算法的精度要低。

那么来试着改变一下精度看看结果如何。

数值分析作业

12.求在 0,1 上的一次最佳平方逼近多项式与二次最佳平方逼近多项式。函数 function s zjpfbj n,a,b 创建一个函数,里面填入次数,和区间范围。base inline x j 1 x j 定义多项式。quan inline 1 x 权函数。a zeros n 1 y zeros...

数值分析作业

实验2.2算法设计与比较。实验目的 编制不同方法的matlab程序,这些方法的计算效果和特点。问题提出 非线性方程的数值解法很多,不同的方法效果如何,要靠计算的实践来分析 比较。实验内容 考虑下列算法 1 牛顿法 2 弦割法 3 抛物线法。分别编写它们的matlab程序。牛顿法程序 function...

数值分析作业

数值分析上机作业。zhh mushan 班级 土木工程一班。姓名 赵惠惠。班级 2010510359 二零一一年六月 舍入误差与有效数。一 问题说明。1 设,其精确值为。1 编制按从小到大的顺序计算通用程序。2 编制按从小到大的顺序计算通用程序。3 按两种顺序分别计算并指出有效位数。编制程序用单精度...