function [I,h] = compoundT(fx,a,b,n)
%复化梯形公式
%输入fx-sym形式的函数,a/b-积分上下限,n-将[a,b]分为n等分
%输出I-积分,h-步长
u = linspace(a,b,n+1);
h = (b-a)/n;%这个就是简单一除.......
v = subs(fx,u);
findnan = find(isnan(v)==1);%考虑到会有NaN的情况,这句是把所有NaN的位置找出来,例如第一题中左端点值
for ix = 1:length(findnan)%然后用极限进行替换,第一题可以直接换成0.
v(findnan(ix)) = limit(fx,u(findnan(ix)));
end
I = (v(1) + v(n+1) + 2*sum(v(2:n)))*h/2;
end
function [I,h] = compoundS(fx,a,b,n)
%复化辛普森公式
%输入fx-sym形式的函数,a/b-积分上下限,n-将[a,b]分为n等分
%输出I-积分,h-步长
u = linspace(a,b,n+1);
u = [u,(u(1:n) + u(2:n+1))/2];
h = (b-a)/n;
v = subs(fx,u);
findnan = find(isnan(v)==1);
for ix = 1:length(findnan)
v(findnan(ix)) = limit(fx,u(findnan(ix)));
end
I = (v(1)+v(n+1)+4*sum(v(n+2:2*n+1))+2*sum(v(2:n)))*h/6;
end