%
% 复合求积公式
%
% clc
clear all; 
close all; 

f = @(x) sin(x)./x;  % 采用数组运算，使得函数可以作用在向量或矩阵上
a = 0;  b = 1;       % 积分区间
n = 8;  h = (b-a)/n; % 区间等分数和步长

X = a : h : b;  % 求积节点
Y = f(X);       % 节点上的函数值
Y(1) = 1;       %  y(1)=0/sin(0), 需要手工赋值

I = integral(f,0,1);  % 近似真解

X,Y
% 复合梯形公式
Tn = Y(1) + 2*sum(Y(2:n)) + Y(n+1);
Tn = Tn*h/2;
fprintf('\n复合梯形公式计算的近似值为: %f, 误差: %.2e\n', Tn, abs(Tn-I));

% 复合 Simpson 公式
Sn = Y(1) + Y(n+1) + 4*sum(Y(2:2:n)) + 2*sum(Y(3:2:n-1));
Sn = Sn*h/3;
fprintf('复合Simpson公式计算的近似值为: %f, 误差: %.2e\n', Sn, abs(Sn-I));
