数值积分的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 按两种顺序分别计算并指出有效位数。编制程序用单精度...