洛谷P4525 【模板】自适应辛普森法1

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

P4525洛谷传送门

P4525题目描述

计算积分

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

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

输入格式

一行,包含6个实数a,b,c,d,L,R

输出格式

一行,积分值,保留至小数点后6位。

输入输出样例

输入 #1复制

1 2 3 4 5 6
输出 #1复制

2.732937

我的理解

求面积

说明/提示

a,b,c,d∈[-10,10]

-100≤L<R≤100 且 R-L≥1

Solution

今天下午我也不知道为什么要去听这种课,但是又不想在最后几天留下遗憾,所以就听了一些东西,来做(作)做(作)题(死)吧。没想到在几番调试后居然AC了!!!

辛普森公式

非常优美而又好记!

只有3个系数!

而且,这个东西在计算不超过4次的函数时是非常精准的!

比较适合在于被积函数的原函数不好找的情况下使用!

而且,可以套上递归的模型,使得答案更加准确!

原理

对一段区间进行递归二分,再套用Simpson公式拟合。当整段区间的拟合结果等于(十分接近于)二分区间的两个结果之和时,就是找到了答案。

Code

定义好变量和精度

#include<iostream>
#include<cstdio>
#include<cmath>
#define IL inline
#define re register
using namespace std;
const double eps=1e-;
double a,b,c,d,L,R;

计算函数f

IL double f(double x)
{
return (c*x+d)/(a*x+b);
}

套用辛普森公式!

IL double simpson(double l,double r)
{
return (r-l)*(f(l)+*f((l+r)/2.0)+f(r))/;
}

套用带精度的递归!

double integral(double l,double r)
{
double mid=(l+r)/,ans=simpson(l,r);
if(fabs(ans-simpson(l,mid)-simpson(mid,r))<eps) return (ans+simpson(l,mid)+simpson(mid,r))/;
return integral(l,mid)+integral(mid,r);
}

把eps设的再小一点也没又关系哟!再不行,可以考虑使用long double!

主函数部分

int main()
{
cin>>a>>b>>c>>d>>L>>R;
printf("%.6lf",integral(L,R));
return ;
}

黄字部分:为了使结果更精准,可以将这段区间二分和不二分的答案求加权平均值!

Attention

注意输出六位小数!

递归函数就不要写inline了!不然更容易爆栈!

Simpson公式很好记,考虑背下来?

End

看看下一篇?

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

洛谷P4525 【模板】自适应辛普森法1与2的更多相关文章

  1. 洛谷.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]\] 推导过程 ...

  2. 洛谷4525 & 4526:【模板】自适应辛普森法——题解

    参考: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%B ...

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

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

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

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

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

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

  6. luogu P4525 自适应辛普森法1

    LINK:自适应辛普森法1 观察题目 这个东西 凭借我们的数学知识应该是化简不了的. 可以直接认为是一个函数 求定积分直接使用辛普森就行辣. 一种写法: double a,b,c,d; double ...

  7. 洛谷P3373 [模板]线段树 2(区间增减.乘 区间求和)

    To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格 ...

  8. 洛谷P3375 [模板]KMP字符串匹配

    To 洛谷.3375 KMP字符串匹配 题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next.如果 ...

  9. LCT总结——概念篇+洛谷P3690[模板]Link Cut Tree(动态树)(LCT,Splay)

    为了优化体验(其实是强迫症),蒟蒻把总结拆成了两篇,方便不同学习阶段的Dalao们切换. LCT总结--应用篇戳这里 概念.性质简述 首先介绍一下链剖分的概念(感谢laofu的讲课) 链剖分,是指一类 ...

随机推荐

  1. SSH(三)

    在Spring中引用属性文件:    优点:        1.防止随意更改jdbc的连接        2.给不懂代码的人使用    步骤:        1.数据库连接信息写在属性文件中      ...

  2. python学习记录(八)

    0910--https://www.cnblogs.com/fnng/archive/2013/04/28/3048356.html Python异常 Python用异常对象(exception ob ...

  3. 一接口自动化中生成测试数据需要用到的java类API--import java.util.Properties;

    转载地址:    http://www.cnblogs.com/lay2017/p/8596871.html#undefined 写的很详细

  4. MySQL :LAST_INSERT_ID()函数总结

    作用:当对table进行insert操作时,返回具有Auto_increment(自动增长)特性的属性列的最新值. 该函数的特点 1.每当断开本次连接之后又重新连接时,该函数的返回值会被重置为0. 2 ...

  5. 在 Vs2013中查看类的内部布局

    第一步:在Visual Studio中配置命令行环境(Command Prompt) 来自:https://blog.csdn.net/u013553529/article/details/77417 ...

  6. 强连通分量——tarjan算法

    概念: 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通.如果有向图G的每两个顶点都强连 ...

  7. [Effective Java 读书笔记] 第三章类和接口 第二十三-- ??条

    第二十三条 请不要再新代码中使用原生态类型 1 使用原生态类型,就失去了泛型在安全性和表述性方面的所有优势,所以新代码中不要使用原生态类型 2 List<String>可以传递给List作 ...

  8. VFP CursorAdapter 起步一(作者:Doug Hennig 译者:fbilo)

    CursorAdapter 类是 VFP 8 中最重要的新功能之一,因为它提供了一种简单易用.接口统一的访问远程数据源方式.在这个月的文章里,Dung Hennig 将向你展示 CursorAdapt ...

  9. oneweb and starlink

    2019.7.16,一网在首尔开展在轨测试,最高速度400Mbps,延时32ms:地面终端由韩国Intellian生产. https://www.oneweb.world/media-center/o ...

  10. ELK(V7)部署与架构分析

    1.ELK的背景介绍与应用场景 在项目应用运行的过程中,往往会产生大量的日志,我们往往需要根据日志来定位分析我们的服务器项目运行情况与BUG产生位置.一般情况下直接在日志文件中tailf. grep. ...