• 大小: 1.60KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-03-28
  • 语言: Matlab
  • 标签: matlab  

资源简介


数值积分课程需编制自适应的Simpson公式,此代码采用递归函数,函数中采用了fcnchk函数,matlab6.5及以下版本会报错,只需将函数定义语句改成inline函数即可

资源截图

代码片段和文件信息

function [sfcount]=acsimpson(fabtol)
%此方法为自适应simpson方法求解定积分
%f为函数,a,b分别为积分区间,tol为精度
%q为积分值,fcount为计算函数值次数

%一下为准备输入数据
f = fcnchk(f‘vectorized‘);       %定义内联函数
h=b-a;             %步长
qu=[a a+h/2 b];    %三个节点
qu(qu==0)=2^-1024; %避免计算函数值出现NAN的情况
y=feval(fqu);     %计算函数节点处的值
s=y*[1 4 1]‘*h/6;  %Simpson积分
fcount=0;          %定义初始计数器
tol=tol*15;        %调整精度

[sfcount]=subsim(fsquyfcounttol); %递归函数
fcount=fcount+3;   %计数器加上准备输入数据的三次计算
end

%以下为递归函数
function [sfcount]=subsim(fsquyfcounttol)
%以下为对qu二分,分别对两个小区间求出Simpson积分
h=(qu(end)-qu(1))/2;
quadd=[qu(1)+h/2 qu(2)+h/2];
quadd(quadd==0)=2^-1024; %避免计算函数值出现NAN的情况
yadd=feval(fquadd);
subs=[y(1) yadd(1) 

评论

共有 条评论