clc
clear
format long g
%精确解
syms t;
g(t)=exp(3*t).*cos(pi*t);
Es=int(g(t),0,2*pi);
Es=vpa(Es);
a=0;
b=2*pi;
n=1000;
%划分区间,x1公n+1个点
x=a:(b-a)/n:b;
f=exp(3*x).*cos(pi*x);
%复化梯形公式
Tn=(b-a)/(2*n)*(f(1)+2*sum(f(2:n))+f(n+1));
%计算误差
ETn=abs(Es-Tn);
%复化辛普森公式
%此公式有误
hx=zeros(1,n);
for i=1:n
hx(i)=(x(i)+x(i+1))/2;
end
hf=exp(3*hx).*cos(pi*hx);
Sn=(b-a)/(6*n)*(f(1)+4*sum(hf(1:n))+2*sum(f(2:n))+f(n+1));
%计算误差
ESn=abs(Es-Sn);
fprintf('当前划分区间份数为:\t\t\t%d\n',n)
fprintf('精确积分结果为:\t\t\t\t%f\n',Es)
fprintf('复化梯形公式积分结果为:\t\t%f\n',Tn)
fprintf('复化梯形公式积分误差为:\t\t%f\n',ETn)
fprintf('复化辛普森公式积分结果为:\t%f\n',Sn)
fprintf('复化辛普森公式积分误差为:\t%f\n',ESn)