加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

基于辛普森公式的自适应法求积分(matlab源程序)

(2009-06-06 15:47:18)
标签:

程序

教育

分类: 数值分析
function s=Self_Adaptive_integral(a,b,tol,M)
%input:  a--下限
       b--下限
       tol--the tolerance(容差)
       m--初始设置的步数
h=(b-a)/M;%步距
s=0;
for i=1:M
    x=a+(i-1)*h;
    y=a+i*h;
    to=abs(simpson_integral(x,y,2)+simpson_integral(x,y,1))/10;
    j=1;
    while(to>=tol)  %循环直到to<tol为止
    j=j+1;
    to=(abs(simpson_integral(x,y,2^j)-simpson_integral(x,y,1)))/10;
    %精度测试式
    end
    s=s+simpson_integral(x,y,2^j);
end
 
function y=f(x)
 f--被积函数
y=x^5+sin(x)*x^6*sqrt(x);
 
function s=simpson_integral(a,b,m)
%input: a--下限
      b--上限
      m--步数
h=(b-a)/(2*m);
s1=0;
s2=0;
for i=1:(m-1)
    x=a+2*i*h;
    s1=s1+f(@f,x);
end
for i=1:m
    x=a+(2*i-1)*h;
    s2=s2+f(@f,x);
end
s=h/3*(f(@f,a)+f(@f,b)+2*s1+4*s2);

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有