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

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

【数值分析实验MATLAB】数值积分:梯形公式、辛普森公式、复化梯形公式、复化辛普森公式、龙贝格算法、自适应求积方法
(1)Matlab代码:
f1:




if x==0 y=1; else %y=exp(-x^2); y=(sin(x))/x; end 

梯形公式:

a=0; b=1; tx=(b-a)/2*(f1(a)+f1(b)); tx=vpa(tx,5); tx 

simpson公式:

a=0; b=1; xps=(b-a)/6*(f1(a)+4*f1((a+b)/2)+f1(b)); xps=vpa(xps,5); xps 
a=0; b=1; e=1e-6; m=1; h=b-a; T(1)=h/2*(f1(a)+f1(b)); while 1 h=h/2; sum=0; for j=1:2^(m-1) sum=sum+f1(a+(2*j-1)*h); end S(1)=T(1)/2+h*sum; for j=1:m S(j+1)=S(j)+(S(j)-T(j))/(4^j-1); end if(abs(S(m+1)-T(m))<=e) fprintf('求得最终解为:%f\n',S(m+1)); fprintf('迭代次数为:%d\n',m); return end T=S; m=m+1; end 

复化辛普森公式:

a=0; b=1; e=1e-6; N=20; n=0; h0=(b-a)/2; S0=h0/3*(f1(a)+f1(b)+4*f1((a+b)/2)); while n<N n=n+1; h1=h0/2; sum1=0; sum2=0; for k=1:2^(n-1) sum1=sum1+f1(a+(4*k-2)*h1); end for k=1:2^n sum2=sum2+f1(a+(2*k-1)*h1); end S1=S0/2+h1/3*(-2*sum1+4*sum2); if(abs(S1-S0)<e) fprintf('求得最终解为:%f\n',S1); fprintf('迭代次数为:%d\n',n); return end S0=S1; h0=h1; end 

龙贝格算法:

a=0; b=1; e=1e-6; h=b-a; T(1)=h.*(f1(a)+f1(b))./2; m=1; while(1) h=h/2; sum=0; for j=1:2^(m-1) sum=sum+f1(a+h*(2*j-1)); end S(1)=T(1)/2+h*sum; for j=1:m S(j+1)=S(j)+(S(j)-T(j))/(4^j-1); end if(abs(S(m+1)-T(m))<=e) break; end T=S; m=m+1; end fprintf('求得解为:%f\n',S(m+1)); fprintf('迭代次数:%d\n',m); 

自适应求积方法:

format short a=0; b=1; e=1e-6; p=[a,b]; p0=p; ep=[e]; m=0; q=0; I=0; while(1) n1=length(ep); n=length(p0); if n==1 break; end h=p0(2)-p0(1); s0=h/6*(f1(p0(1))+4*f1(p0(1)+h/2)+f1(p0(1)+h)); s1=h/12*(f1(p0(1))+4*f1(p0(1)+h/4)+f1(p0(1)+h/2)); s2=h/12*(f1(p0(1)+h/2)+4*f1(p0(1)+h*3/4)+f1(p0(1)+h)); if abs(s0-s1-s2)<=15*ep(1) I=I+s1+s2; p0=p0(2:n); if n1>=2; ep=ep(2:n1); end q=q+1; else m=m+1; p0=[p0(1),p0(1)+h/2,p0(2:n)]; if n1==1 ep=[ep(1)/2,ep(1)/2]; else ep=[ep(1)/2,ep(1)/2,ep(2:n1)]; end if q==0 p=p0; else p=[p(1:q),p0]; end end end fprintf('求得的解为:%f\n',I); fprintf('分层数为%d\n',m); p=p'; disp('分点为');p 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208462.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午11:32
下一篇 2026年3月19日 上午11:32


相关推荐

  • CurrentHashMap笔记

    CurrentHashMap笔记其key不为空桶上链表长度达到8个或者以上,并且数组长度为64以下时只会触发扩容而不会将链表转为红黑树CurrentHashMap(jdk1.8)之所以线程安全因为在添加元素时候,采用synchronized来保证线程安全,然后计算size的时候采用CAS操作进行计算,采用volatile修饰HashEntry[]table保存数据(Node数组),采用table数组元素作为锁细化锁粒度CurrentHashMap(jdk1.7)(Entry数组)之所以线程安全因为

    2022年6月18日
    26
  • 二六三(002467)具备“AI养龙虾”(OpenClaw)的相关概念,并且在业

    二六三(002467)具备“AI养龙虾”(OpenClaw)的相关概念,并且在业

    2026年3月13日
    2
  • watchdog linux 进程,watchdog

    watchdog linux 进程,watchdog软件简介 Linux 自带了一个 watchdog 的实现 用于监视系统的运行 包括一个内核 watchdogmodu 和一个用户空间的 watchdog 程序内核 watchdog 模块通过 dev watchdog 这个字符设备与用户空间通信 用户空间程序一旦打开 dev watchdog 设备 就会导致在内核中启动一个 1 分钟的定时器 此后 用户空间程序需要保证在 1 分钟之内向这个设备写

    2026年3月19日
    2
  • lvs常用命令

    lvs常用命令lvs命令(具体参数的意思可以参看其他文章)1,查看配置ipvsadm-ln2,清空所有配置ipvsadm-Clistener添加:ipvsadm-A-t192.168.11.60:80-srr修改:ipvsadm-E-t192.168.11.60:80-swrr删除:ipvsadm-D-t192.168.11.60:80realserv…

    2022年7月23日
    26
  • 最小生成树算法

    最小生成树算法最小生成树算法是给定一个无向图 及其顶点和边的权值 求最小生成树的算法 主要可以分为 prim 算法和 kruskal 算法 prim 算法的思想是加点法 即开始时任意从图中选择一个点 作为 U 集合 其余点为 S U 集合 其中 S 为原图中的顶点集合 求 U 集合中顶点到 S U 集合中顶点的最小距离 这个最小距离即为最小生成树的组成边 然后将对应最小距离的 S U 集合的顶底放入 U 集合 然后重复执行上述操作 直至 U 集合 S 集

    2026年3月18日
    1
  • navicate 15.0.25 激活码【2021.7最新】[通俗易懂]

    (navicate 15.0.25 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~ML…

    2022年3月21日
    175

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号