%eps:误差限 %
%应用举例: %事先定义
%[T n]=IntCompTrape(@IntF,@IntD2F,0,1) %[T n]=IntCompTrape(@IntF,@IntD2F,0,1,0.5e-7) %利用内联函数
%F=inline('3^x');D2F=inline('-(log(3))^2*3^x'); %[T n]=IntCompTrape(F,D2F,0,1)
if nargin==4
eps=\默认精度 end
%求被积函数的二次导数在区间[a,b]上的最大值
[x,fval]=fminbnd(D2f,a,b,optimset('TolX',eps/10)); fmax=-fval; %计算等分区间数
n=ceil(sqrt(abs(fmax*(b-a)^3/12/eps)));
h=(b-a)/n;%步长 T=f(a)+f(b); for k=\ x1=a+k*h; T=\end T=h*T/2; return;
18、复化Simpson公式求积分 测试函数见17
function [S n]=IntCompSimpson(f,D4f,a,b,eps) %复化辛普森公式求积分
%[S n]=IntCompSimpson(f,D4f,a,b,eps) %S:数值求积结果 %n:区间等分数
%f:被积函数,可利用函数脚本文件事先定义,也可以利用内联函数
?f:被积函数的四次导数的相反值,可利用函数脚本文件事先定义,也可以利用内联函数 % 取相反值是为了便于计算被积函数的四次导数在区间[a,b]上的最大值 %a:积分下限
%b:积分上限 %eps:误差限 %
%应用举例: %事先定义
%[T n]=IntCompSimpson(@IntF,@IntD4F,0,1) %[S n]=IntCompSimpson(@IntF,@IntD4F,0,1,0.5e-7) %利用内联函数
%F=inline('3^x');D4F=inline('-(log(3))^4*3^x'); %[S n]=IntCompSimpson(F,D4F,0,1)
if nargin==4
eps=\默认精度 end
%求被积函数的四次导数在区间[a,b]上的最大值
[x,fval]=fminbnd(D4f,a,b,optimset('TolX',eps/10)); fmax=-fval; %计算等分区间数
n=ceil(sqrt(sqrt(abs((b-a)^5*fmax/16/180/eps))));
h=(b-a)/n;%步长
S=f(a)+f(b)+4*f(a+h/2); for k=\ x1=a+k*h; x2=x1+h/2;
S=\end S=S*h/6; return;