变步长复化辛普森公式计算积分 matlab编程

2. 编写用变步长复化辛普森公式计算积分 b

af(x)dx 的程序。

1用上面编写的程序计算下列积分并分析计算结果 (1

1-22-jpg_6_0_______-24-0-0-24.jpg

)

0cosxdx (2

1-14-jpg_6_0_______-17-0-22-17.jpg

)0xcosxdx (3) 220xdx

程序:

function S=bianfuhuasimpson(fx,a,b,eps,M)

% 变步长复合simpson求积公式

% 调用方式: S=fuhuasimpson(@fx,a,b,epsilon)

% fx -- 求积函数(函数文件)

% a, b -- 求积区间

% eps -- 计算精度

% M--最大允许输出划分数

n=1;

h=(b-a)/n;

T1=h*(feval(fx,a)-feval(fx,b))/2;

Hn=h*feval(fx,(a+b)/2);

S1=(T1+2*Hn)/3;

n=2*n;

% 最好与倒数第三行保持一致(变步长)

while n<=M

T2=(T1+Hn)/2;

Hn=0;

h=(b-a)/n;

for j=1:n

x(j)=a+(j-1/2)*h;

y(j)=feval(fx,x(j));

Hn=Hn+y(j);

end

Hn=h*Hn;

S2=(T2+2*Hn)/3;

fprintf(' n=%2d S2=%-12.9f S2-S1=%-12.9f\n',n,S2,abs(S2-S1)); if abs(S2-S1)

break;

else

T1=T2;

S1=S2;

n=2*n;

end

end

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐