利用复化梯形公式、
复化simpson 公式
计算积分
精品资料
仅供学习与交流,如有侵权请联系网站删除 谢谢
2
实验目的或要
求
1、利用复化梯形公式、复化simpson 公式计算积分
2、比较计算误差与实际误差
实
验
原
理
(
算
法
流
程
图
或
者
含
注
释
的
源
代
码
)
取n=2,3,…,10分别利用复化梯形公式、复化simpson 公式计算积分
1
2
0
Ixdx
,并与真值进行比较,并画出计算误差与实际误差之间的曲
线。
利用复化梯形公式的程序代码如下:
function f=fx(x)
f=x.^2; %首先建立被积函数,以便于计算真实值。
a=0; %积分下线
b=1; %积分上线
T=[]; %用来装不同n值所计算出的结果
for n=2:10;
h=(b-a)/n; %步长
x=zeros(1,n+1); %给节点定初值
for i=1:n+1
x(i)=a+(i-1)*h; %给节点赋值
end
y=x.^2; %给相应节点处的函数值赋值
t=0;
for i=1:n
t=t+h/2*(y(i)+y(i+1)); %利用复化梯形公式求值
end
T=[T,t]; %把不同n值所计算出的结果装入 T中
end
R=ones(1,9)*(-(b-a)/12*h.^ 2*2); %积分余项(计算误差)
true=quad(@fx,0,1); %积分的真实值
A=T-true; %计算的值与真实值之差(实际误差)
x=linspace(0,1,9);
plot(x,A,'r',x,R,'*') %将计算误差与实际误差用图像画出来
注:由于被积函数是x.^2,它的二阶倒数为2,所以积分余项为:(-(b-
a)/12*h.^ 2*2)
精品资料
仅供学习与交流,如有侵权请联系网站删除 谢谢
3
实
验
原
理
(
算
法
流
程
图
或
者
含
注
释
的
源
代
码
)
利用复化simpson 公式的程序代码如下:
同样首先建立被积函数的函数文件:
function f=fx1(x)
f=x.^4;
a=0; %积分下线
b=1; %积分上线
T=[]; %用来装不同n值所计算出的结果
for n=2:10
h=(b-a)/(2*n); %步长
x=zeros(1,2*n+1); %给节点定初值
for i=1:2*n+1
x(i)=a+(i-1)*h; %给节点赋值
end
y=x.^4; %给相应节点处的函数值赋值
t=0;
for i=1:n
t=t+h/3*(y(2*i-1)+4*y(2*i)+y(2*i+1)); %利用复化simpson公式求值
end
T=[T,t] ; %把不同n值所计算出的结果装入 T中
end
R=ones(1,9)*(-(b-a)/180*((b-a)/2).^4*24) ; %积分余项(计算误差)
true=quad(@fx1,0,1); %积分的真实值
A=T-true; %计算的值与真实值之差(实际误差)
x=linspace(0,1,9);
plot(x,A,'r',x,R,'*')
精品资料
仅供学习与交流,如有侵权请联系网站删除 谢谢
4
法二:
a=0;
b=1;
T=[];
for n=2:10
h=(b-a)/(2*n);
x=zeros(1,2*n+1);
for i=1:2*n+1
x(i)=a+(i-1)*h;
end
y=x.^4;
t=y(1)+y(2*n+1);
for i=1:n
t=t+4*y(2*i)+2*y(2*i-1);
end
T=[T,h/3*t];
end
true=quad(@fx1,0,1);
A=T-true;
x=linspace(0,1,9);
plot(x,A)
此法与第一种一样,只是所用的表达式不同。
注:由于被积函数是x.^4,它的四阶倒数是24,所以它的积分余项是:
(-(b-a)/180*((b-a)/2).^4*24)
精品资料
仅供学习与交流,如有侵权请联系网站删除 谢谢
5
实
验
结
果
分
析
及
心
得
体
会
上图是利用复化梯形公式所画出的误差。其中:红线是计算误差,‘*’
号是实际误差。-0.0017是计算误差。0.0417、0.0185、0.0104、0.0067
0.0046、0.0034、0.0026、0.0021、0.0017是n值分别为2到10的实际
误差。
上图是利用复化simpson公式所画出的误差。其中:红线是计算误
差,‘*’号是实际误差。
注:纵轴是0.0001。
0.5208、0.1029、0.0326、0.0133、0.0064、0.0035、0.0020、0.0013、
0.0008是n值分别为2到10的实际误差,-0.0083是计算误差。
成
绩
评
定
教师签名:
年 月 日