实验目的:熟悉复化积分公式的使用。主要为复化梯形、复化Simpson公式。
实验题目:给定函数f(x)及其定义区间[a,b],输入等分区间数n,给出计算定积分的复化梯形、复化Simpson数值积分的子程序。
建立工作目录,下面建立三个文件:f.m、trapezoid.m、simpson.m。文件内容如下:
f.m
function f= f(x)
f=1/x;
end
trapezoid.m
function trapezoid = trapezoid(a,b,n)
%复化梯形公式子程序
trapezoid=0;
for i=1:n-1
trapezoid=trapezoid+f(a+i*(b-a)/n);
end
trapezoid=(b-a)/(2*n)*(f(a)+f(b)+2*trapezoid);
end
simpson.m
function simpson=simpson(a,b,n)
%Simpson积分公式子程序
simpson1=0;simpson2=0;
for i=1:n-1
simpson1=simpson1+f(a+(2*i+1)*(b-a)/(2*n));
simpson2=simpson2+f(a+i*(b-a)/n);
end
simpson=(b-a)/(6*n)*(f(a)+f(b)+4*simpson1+2*simpson2);
end
在命令窗口输入:
trapezoid(1,2,100)
运行结果:
ans =
0.6932
在命令窗口输入:
simpson(1,2,100)
运行结果:
ans =
0.6865