-
实验四 复化科斯特公式求积
- 实验要求(含有算法说明和程序说明)
复化公式就是把一个区间分成若干个小区间,然后在每一个小区间分别应用梯形公式,科斯特公式等计算结果,然后把得到的结果进行累加,从而提高公示的精度。
复化科斯特公式比复化辛普生公式有更高的精度,把一个大区间分成n份,然后把每个小区间分成四份计算。这是插值型求积公式,为四次插值函数积分的近似值,对于科斯特公式的精度,是可以用于常规运算的。一开始公式没加入精度控制,会无法判断需要计算几次,需要加入精度控制,也就是误差估计,但是误差估计公式中的五阶倒数比较难实现,diff函数试过多次没有成功,所以我就采取了后一项减去前一项的方式配合默认显示精度进行循环次数控制,此法比较简单有效,
- 源代码
function kst(a,b)
n=2;a=0;b=1;
for i=1:500
x= a:(b-a)/(4*n):b;
m=4*n+1;
h=(b-a)/n;
c=(h/90)*(sum(7*f(x(1:4:m-1)))+sum(32*f(x(2:4:m)))+sum(12*f(x(3:4:m)))+sum( 32*f(x(4:4:m)))+ sum(7*f(x(5:4:m))));
fprintf('s(%d)=%f\n',n,c);
t(i+1)=c;
if(i>=1)
t(i)=c;
end
if(i>=2)
if(abs(t(i)-t(i-1))<=1e-7)
fprintf('总共计算了%d次',i)
break;
end
end
n=n*2;
end
- 实验要求(含有算法说明和程序说明)
- 实验结果
>> kst2
s(2)=0.909605
s(4)=0.909604
s(8)=0.909604
总共计算了3次>>
文章评论