%自适应simpson算法
clc
clear
close all;
syms x
f(x)=100/(x^2)*sin(10/x);%目标函数
a=1;b=3;%初始区间
TOL=1E-4;%误差容限
[s,fcount]=acsimpson1(f,a,b,TOL);t = 1:0.001:3;
plot(t,f(t))
hold on
disp("自适应求积结果:")
result = vpa(s);
fprintf("result= %f",result);
% 画出f(x)图像
function [s,fcount]=acsimpson1(f,a,b,tol)
%此方法为自适应simpson方法求解定积分
%f为函数,a,b分别为积分区间,tol为精度
%s为积分值,fcount为计算函数值次数%一下为准备输入数据
f = fcnchk(f,'vectorized');       %定义内联函数
h=b-a;             %步长
qu=[a a+h/2 b];    %三个节点
% qu(qu==0)=2^-1024; %避免计算函数值出现NAN的情况
y=feval(f,qu);     %计算函数节点处的值
s=y*[1 4 1]'*h/6;  %Simpson积分
fcount=0;          %定义初始计数器
tol=tol*10;        %调整精度[s,fcount]=subsim(f,s,qu,y,fcount,tol); %递归函数
fcount=fcount+3;   %计数器加上准备输入数据的三次计算
end%以下为递归函数
function [s,fcount]=subsim(f,s,qu,y,fcount,tol)
%以下为对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(f,quadd);
scatter(quadd,yadd,"o")
hold on
subs=[y(1) yadd(1) y(2) yadd(2) y(3)].*[1 4 1 4 1]*h/6;
s1=sum(subs(1:3));    %左半区间
s2=sum(subs(3:end));  %右半区间
stemp=s1+s2;
fcount=fcount+2;%每次递归一次,函数值运算次数增加2次
if abs(stemp-s)<tols=s1+s2; %若满足精度,采用一次Romberg积分,返回函数值
else                      %若不满足,则继续二分tol=tol/2;[s1,fcount]=subsim(f,s1,[qu(1) qu(1)+h/2 qu(2)],[y(1) yadd(1) y(2)],fcount,tol);[s2,fcount]=subsim(f,s2,[qu(2) qu(2)+h/2 qu(end)],[y(2) yadd(2) y(3)],fcount,tol);s=s1+s2;              %将每个小区间的Romberg积分值相加            %fcount=fcount1+fcount2;   %将每个小区间的计数器相加
endend

自适应求积算法 MatLab版相关推荐

  1. 伪距定位算法(matlab版)

    在各种伪距定位算法中,最小二乘法是一种比较简单而广泛的方法,该算法可以分为以下几步: 1.准备数据与设置初始值 这里准备数据,主要是对于各颗可见卫星,收集到它们在同一时刻的伪距测量值,计算测量值的各项 ...

  2. 人工势场算法 Matlab版源码

    人工势场算法,用于路径规划 main.m程序 %初始化车的参数 Xo=[0 0];%起点位置 k=15;%计算引力需要的增益系数 K=0;%初始化 m=5;%计算斥力的增益系数,都是自己设定的. Po ...

  3. 基于sift的医学图像配准算法matlab版

    当进行医学图像配准时,SIFT (Scale-Invariant Feature Transform) 算法是一种广泛使用的特征提取和匹配算法.它具有良好的尺度不变性和鲁棒性,可以在不同的图像尺度下检 ...

  4. 【图像增强】基于麻雀搜索算法与非完全beta函数的自适应图像增强算法Matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  5. 【数值分析实验MATLAB】数值积分:梯形公式、辛普森公式、复化梯形公式、复化辛普森公式、龙贝格算法、自适应求积方法

    (1)Matlab代码: f1: if x==0y=1; else%y=exp(-x^2);y=(sin(x))/x; end 梯形公式: a=0; b=1; tx=(b-a)/2*(f1(a)+f1 ...

  6. Matlab自适应滤波算法 LMS小白通俗易懂版

    Matlab自适应滤波算法 在学习自适应算法的过程中,入门阶段,学习了LMS算法.NLMS算法,并用Matlab对算法进行了复现. LMS 最小均方(LMS)是一种搜索算法,它通过对目标函数进行适当修 ...

  7. 单纯形表的matlab输出,自编MATLAB版单纯性算法 可以列出单纯形表以及其他相关数据...

    自编MATLAB版单纯性算法 可以列出单纯形表以及其他相关数据 function [dcxb,x,fval,exitflag,flag]=simplex(f,A,b,Aeq,beq) %本程序相关说明 ...

  8. 自适应复化辛普森公式求积算法(C语言实现)

    自适应复化辛普森公式求积算法(C语言实现) 利用复化辛普森公式求积分自适应步骤 基于C语言实现的代码 利用复化辛普森公式求积分自适应步骤 h为步长,a为积分下限,b为积分上限,f为积分函数,n为划分的 ...

  9. Matlab算法DSP移植验证,DSP计算机作业 自适应噪声抵消LMS算法Matlab仿真

    [实例简介] 自适应噪声抵消LMS算法Matlab仿真,DSP计算机作业 数字信号处理 自适应 1) 借助MATLAB画出误差性能曲面和误差性能曲面的等值曲线: 2) 写出最陡下降法, LMS算法的计 ...

  10. matlab中的covsfa什么意思,MALSAR1.1 多种多任务学习算法的工具箱 有代码有使 册 matlab版 238万源代码下载- www.pudn.com...

    文件名称: MALSAR1.1下载 收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 2536 KB 上传时间: 2014-11-04 下载次数: 1 提 供 者: ...

最新文章

  1. 算术运算符举例java_Java的算术运算符简介
  2. vs工程移植报错:缺少MSVCP140D.dll ,CONCRT140D.dll ucrtbased.dll vcruntime140d.dll错误。
  3. HDU 4339 Query
  4. 计算机共享盒子,电脑之间如何共享文件
  5. x86从实模式到保护模式实验说明
  6. LeetCode 495. 提莫攻击
  7. Keil(MDK-ARM-STM32)系列教程(一)_新建软件工程详细过程
  8. 清华镜像站 python_使用清华、豆瓣镜像源下载tensorflow
  9. idea 用鼠标滚轮调整代码文字大小
  10. 【TSP】基于matlab hopfield神经网络求解旅行商问题【含Matlab源码 408期】
  11. 《31天成为IT服务达人》之技能篇中的磁带库
  12. Base理论是什么?之前也聊到过CAP理论
  13. STL容器迭代器的理解
  14. matlab图像转为灰度,matlab怎么读取一幅图像,并转换为灰度图像
  15. 七段显示器 + 74HC595 显示 / 设定
  16. 部门刚刚来了个测试开发,听说是00后,上来一顿操作给我看呆了...
  17. http状态码、含义大全
  18. lisp 非对称缓和曲线_非对称缓和曲线放样计算程序清单(for Casio-fx4850)
  19. 【TrackVis 教程】基于DTI的纤维追踪及显示
  20. 4键电子手表说明书_四个按钮的手表怎么调 4键电子手表怎么调时间

热门文章

  1. 暑期作息时间表模板_小学生暑假作息时间表模板
  2. dcp-9020cdn复印位置有_兄弟DCP-9020CDN打印机驱动下载
  3. 嘉禾病历系统服务器,嘉和电子病历系统使用手册-医生工作站
  4. EMF图片插入WORD另存为PDF图片不清晰
  5. gif一键抠图 在线_不用下载的在线抠图软件哪里找?
  6. 国内AGV机器人厂家数目统计及区域分布分析
  7. 中兴交换机8912E配置
  8. gg修改器偏移量修改_GG修改器正版
  9. C# Socket/TCPClient断线重连/不断重连的简单思路+代码,海量注释
  10. ODAC的tnsnames.ora文件