参考:https://phqghume.github.io/2018/05/19/%E8%87%AA%E9%80%82%E5%BA%94%E8%BE%9B%E6%99%AE%E6%A3%AE%E6%B3%95/ 以及洛谷不多的题解。

辛普森推导过程就看参考吧,当然你要想看懂推导需要:

1.会高中导数那点东西,至少知道原函数怎么求。

2.粗略了解定积分。

3.知道微积分第一、第二基本定理(从知乎上找的:https://www.zhihu.com/question/21439225)。

然后推导就很简单了,实际上就是用的是将任意曲线近似转换成二次函数曲线去求。

————————————————————

https://www.luogu.org/problemnew/show/P4525

计算积分

结果保留至小数点后6位。

数据保证计算过程中分母不为0且积分能够收敛。

这就是自适应辛普森的板题了,eps开到1e-12大概就能过了。

(话说为什么要“自适应”?那当然是因为精度的原因啦,我们左右分一下将答案求和和一个区间的答案比较一下没有多少误差就return就行啦。)

  1. #include<cmath>
  2. #include<queue>
  3. #include<cstdio>
  4. #include<cctype>
  5. #include<cstring>
  6. #include<iostream>
  7. #include<algorithm>
  8. using namespace std;
  9. typedef double dl;
  10. const dl eps=1e-;
  11. dl a,b,c,d,L,R;
  12. inline dl f(dl x){
  13. return (c*x+d)/(a*x+b);
  14. }
  15. inline dl simpson(dl l,dl r){
  16. dl mid=(l+r)/;
  17. return (f(l)+*f(mid)+f(r))*(r-l)/;
  18. }
  19. inline dl asr(dl l,dl r,dl ans){
  20. dl mid=(l+r)/;
  21. dl l1=simpson(l,mid),r1=simpson(mid,r);
  22. if(fabs(l1+r1-ans)<eps)return l1+r1;
  23. return asr(l,mid,l1)+asr(mid,r,r1);
  24. }
  25. int main(){
  26. scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&c,&d,&L,&R);
  27. printf("%lf\n",asr(L,R,simpson(L,R)));
  28. return ;
  29. }

————————————————————

https://www.luogu.org/problemnew/show/P4526

计算积分

保留至小数点后5位。若积分发散,请输出"orz"。

挺吓人的,但思考a<0显然就发散了。

a>=0时a越大收敛得越慢,于是打表,大概得出来x=12时就已经约为0了。

于是L=eps,R=12跑一遍自适应辛普森法即可。

  1. #include<cmath>
  2. #include<queue>
  3. #include<cstdio>
  4. #include<cctype>
  5. #include<cstring>
  6. #include<iostream>
  7. #include<algorithm>
  8. using namespace std;
  9. typedef double dl;
  10. const dl eps=1e-;
  11. dl a;
  12. inline dl f(dl x){
  13. return pow(x,a/x-x);
  14. }
  15. inline dl simpson(dl l,dl r){
  16. dl mid=(l+r)/;
  17. return (f(l)+*f(mid)+f(r))*(r-l)/;
  18. }
  19. inline dl asr(dl l,dl r,dl ans){
  20. dl mid=(l+r)/;
  21. dl l1=simpson(l,mid),r1=simpson(mid,r);
  22. if(fabs(l1+r1-ans)<eps)return l1+r1;
  23. return asr(l,mid,l1)+asr(mid,r,r1);
  24. }
  25. int main(){
  26. scanf("%lf",&a);
  27. if(a<)puts("orz");
  28. else printf("%.5lf\n",asr(eps,,simpson(eps,)));
  29. return ;
  30. }

+++++++++++++++++++++++++++++++++++++++++++

+本文作者:luyouqi233。               +

+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

+++++++++++++++++++++++++++++++++++++++++++

洛谷4525 & 4526:【模板】自适应辛普森法——题解的更多相关文章

  1. 洛谷 P4525 & P4526 [模板] 自适应辛普森积分

    题目:https://www.luogu.org/problemnew/show/P4525 https://www.luogu.org/problemnew/show/P4526 学习辛普森积分:h ...

  2. 洛谷P3387 【模板】缩点 题解

    背景 今天\(loj\)挂了,于是就有了闲情雅致来刷\(luogu\) 题面 洛谷P3387 [模板]缩点传送门 题意 给定一个\(n\)个点\(m\)条边有向图,每个点有一个权值,求一条路径,使路径 ...

  3. 洛谷.4525.[模板]自适应辛普森法1(Simpson积分)

    题目链接 Simpson积分公式:\[\int_a^bf(x)dx\approx\frac{b-a}{6}\left[f(a)+f(b)+4f(\frac{a+b}{2})\right]\] 推导过程 ...

  4. 洛谷 P3385 【模板】负环 题解

    P3385 [模板]负环 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 寻找一个从顶点1所能到达的负环,负环定义为:一个边权之和为负的环. 输入格式 第一行一个正整数T ...

  5. 洛谷P4526 【模板】自适应辛普森法2

    P4526 [模板]自适应辛普森法2 洛谷传送门 题目描述 计算积分 保留至小数点后5位.若积分发散,请输出"orz". 输入格式 一行,包含一个实数,为a的值 输出格式 一行,积 ...

  6. 洛谷P4525 【模板】自适应辛普森法1与2

    洛谷P4525 [模板]自适应辛普森法1 与P4526[模板]自适应辛普森法2 P4525洛谷传送门 P4525题目描述 计算积分 结果保留至小数点后6位. 数据保证计算过程中分母不为0且积分能够收敛 ...

  7. P4526 【模板】自适应辛普森法2

    P4526 [模板]自适应辛普森法2 #include <bits/stdc++.h> using namespace std; ; double a; inline double f(d ...

  8. P4525 【模板】自适应辛普森法1

    P4525 [模板]自适应辛普森法1 #include <bits/stdc++.h> using namespace std; ; double a, b, c, d, l, r; in ...

  9. FFT/NTT总结+洛谷P3803 【模板】多项式乘法(FFT)(FFT/NTT)

    前言 众所周知,这两个东西都是用来算多项式乘法的. 对于这种常人思维难以理解的东西,就少些理解,多背板子吧! 因此只总结一下思路和代码,什么概念和推式子就靠巨佬们吧 推荐自为风月马前卒巨佬的概念和定理 ...

随机推荐

  1. Oracle TDE的学习

    TDE的开启和关闭 设置wallet目录,在参数文件sqlnet.ora中,按照下面的格式加入信息 # Oracle Advanced Security Transparent Data Encryp ...

  2. CSS随笔3

    1. CSS部分简洁使用 * background-radious:使得边框角“圆化”. * background:pink  url(“图片路径”)  no-repeat: * border 可以有 ...

  3. poj 3468 (区间修改 区间查询)

    A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions:147133   ...

  4. hibernate提示Unknown entity: :xxx

    错误提示: org.hibernate.MappingException: Unknown entity: org.dao.po.Role at org.hibernate.internal.Sess ...

  5. Python3 标准库:calendar,time

    1.calendar import calendar print(calendar.month(2008,8)) #某个月 print(calendar.calendar(2008)) #某年 pri ...

  6. HTML5 Geolocation位置信息定位总结

    现在定位功能很常用,所以抽出一些时间将这个功能的知识总结一下作为知识梳理的依据.HTML5 Geolocation的定位用法很简单,首先请求位置信息,用户同意,则返回位置信息.HTML5 Geoloc ...

  7. Python函数的内省-Introspection

    Python函数可以进行内省-Introspection,查看函数内部的细节,方式就是使用函数的__code__属性. def func(a, b = 2): return a + b >> ...

  8. Unicode,UTF-32,UTF-16,UTF-8到底是啥关系?

    编码的目的,就是给抽象的字符赋予一个数值,好在计算机里面表示.常见的ASCII使用8bit给字符编码,但是实际只使用了7bit,最高位没有使用,因此,只能表示128个字符:ISO-8859-1(也叫L ...

  9. Pipeline组Alpha版本发布说明

    Pipeline组Alpha版本发布说明 项目名称 Pipeline 项目版本 Alpha版本 负责人 北京航空航天大学计算机学院 ILoveSE 联系方式 http://www.cnblogs.co ...

  10. TCP 的有限状态机

    TCP 有限状态机的图中每一个方框都是 TCP 可能具有的状态. 每个方框中的大写英文字符串是 TCP 标准所使用的 TCP 连接状态名. 状态之间的箭头表示可能发生的状态变迁. 箭头旁边的字,表明引 ...