洛谷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. 10个很多人不知道的Redis使用技巧

    前言 Redis 在当前的技术社区里是非常热门的.从来自 Antirez 一个小小的个人项目到成为内存数据存储行业的标准,Redis已经走过了很长的一段路.随之而来的一系列最佳实践,使得大多数人可以正 ...

  2. 通信协议之Modbus协议(一)

    Modbus通信协议: 简介:Modbus协议是应用于电子控制器上的一种通用语言 通过此协议,控制器相互之间,控制器经由网络(例如以太网) 和其他设备之间可以通信,他已经成为一种通用工业标准,有啦它 ...

  3. Codeforces Round #470 (Div. 2) A Protect Sheep (基础)输入输出的警示、边界处理

    Bob is a farmer. He has a large pasture with many sheep. Recently, he has lost some of them due to w ...

  4. 题解 bzoj3688【折线统计】

    考虑 \(dp\) . 首先把所有节点按 \(x\) 从小到大排序是很有必要的. 记 f[i][j][0] 表示满足以第 \(i\) 个节点做折线结尾,选取的点集 \(S\) 满足 \(f(S)=j\ ...

  5. STM32片外SRAM作运行内存

    本例演示用的软硬件: 片内外设驱动库:STM32CubeF41.24.1的HAL库1.7.6,2019年4月12日 IDE:MDK-ARM 5.28.0.0,2019年5月 开发板:片外SRAM挂在F ...

  6. awk命令入门

    什么是awk? AWK是一个强大的文本处理工具.可以使用awk读取输入文件.为数据排序.处理数据.对输入执行计算以及生成报表,还有无数其他的功能. 使用awk的基本格式 awk [options] ‘ ...

  7. [Effective Java 读书笔记] 第二章 创建和销毁对象 第二条

    第二条 遇到多个构造器参数时,可以考虑用构建器 当遇到有多个构造器参数时,常见的是用重叠构造器,即: public class TestClass{ public TestClass(int para ...

  8. 20200105--python学习第七天

    今日内容 深浅拷贝 文件操作 内容回顾及补充 1.内容回顾 计算机基础 编码 语法 if/while/for 数据类型 type/id/range 运算符 2.面试题 a.公司线上的系统用的是什么? ...

  9. PDO连接不上又不报错的问题

    前提:连接PDO需要在将php.ini配置文件的 ;extension=pdo_mysql,去掉前面的;号. 今天闲来无事就重新弄了一下PDO,结果怎么都连不上.而且没有给出错误的信息.代码如下: & ...

  10. tomcat+memcached+nginx部署文档(附完整部署包直接运行即可)

    1 前言 1.1 目的 为了正确的部署“ngix+memcached”特编写此部署手册,使安装人员可以通过部署手册知道如何部署系统,也为需要安装该系统的安装人员正确.快速的部署本系统提供帮助. 1.2 ...