洛谷P4525 【模板】自适应辛普森法1与2
洛谷P4525 【模板】自适应辛普森法1
与P4526【模板】自适应辛普森法2
P4525题目描述
计算积分

结果保留至小数点后6位。
数据保证计算过程中分母不为0且积分能够收敛。
输入格式
一行,包含6个实数a,b,c,d,L,R
输出格式
一行,积分值,保留至小数点后6位。
输入输出样例
1 2 3 4 5 6
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
看看下一篇?
洛谷P4525 【模板】自适应辛普森法1与2的更多相关文章
- 洛谷.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]\] 推导过程 ...
- 洛谷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 ...
- 洛谷P4526 【模板】自适应辛普森法2
P4526 [模板]自适应辛普森法2 洛谷传送门 题目描述 计算积分 保留至小数点后5位.若积分发散,请输出"orz". 输入格式 一行,包含一个实数,为a的值 输出格式 一行,积 ...
- P4525 【模板】自适应辛普森法1
P4525 [模板]自适应辛普森法1 #include <bits/stdc++.h> using namespace std; ; double a, b, c, d, l, r; in ...
- P4526 【模板】自适应辛普森法2
P4526 [模板]自适应辛普森法2 #include <bits/stdc++.h> using namespace std; ; double a; inline double f(d ...
- luogu P4525 自适应辛普森法1
LINK:自适应辛普森法1 观察题目 这个东西 凭借我们的数学知识应该是化简不了的. 可以直接认为是一个函数 求定积分直接使用辛普森就行辣. 一种写法: double a,b,c,d; double ...
- 洛谷P3373 [模板]线段树 2(区间增减.乘 区间求和)
To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格 ...
- 洛谷P3375 [模板]KMP字符串匹配
To 洛谷.3375 KMP字符串匹配 题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next.如果 ...
- LCT总结——概念篇+洛谷P3690[模板]Link Cut Tree(动态树)(LCT,Splay)
为了优化体验(其实是强迫症),蒟蒻把总结拆成了两篇,方便不同学习阶段的Dalao们切换. LCT总结--应用篇戳这里 概念.性质简述 首先介绍一下链剖分的概念(感谢laofu的讲课) 链剖分,是指一类 ...
随机推荐
- SSH(三)
在Spring中引用属性文件: 优点: 1.防止随意更改jdbc的连接 2.给不懂代码的人使用 步骤: 1.数据库连接信息写在属性文件中 ...
- python学习记录(八)
0910--https://www.cnblogs.com/fnng/archive/2013/04/28/3048356.html Python异常 Python用异常对象(exception ob ...
- 一接口自动化中生成测试数据需要用到的java类API--import java.util.Properties;
转载地址: http://www.cnblogs.com/lay2017/p/8596871.html#undefined 写的很详细
- MySQL :LAST_INSERT_ID()函数总结
作用:当对table进行insert操作时,返回具有Auto_increment(自动增长)特性的属性列的最新值. 该函数的特点 1.每当断开本次连接之后又重新连接时,该函数的返回值会被重置为0. 2 ...
- 在 Vs2013中查看类的内部布局
第一步:在Visual Studio中配置命令行环境(Command Prompt) 来自:https://blog.csdn.net/u013553529/article/details/77417 ...
- 强连通分量——tarjan算法
概念: 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通.如果有向图G的每两个顶点都强连 ...
- [Effective Java 读书笔记] 第三章类和接口 第二十三-- ??条
第二十三条 请不要再新代码中使用原生态类型 1 使用原生态类型,就失去了泛型在安全性和表述性方面的所有优势,所以新代码中不要使用原生态类型 2 List<String>可以传递给List作 ...
- VFP CursorAdapter 起步一(作者:Doug Hennig 译者:fbilo)
CursorAdapter 类是 VFP 8 中最重要的新功能之一,因为它提供了一种简单易用.接口统一的访问远程数据源方式.在这个月的文章里,Dung Hennig 将向你展示 CursorAdapt ...
- oneweb and starlink
2019.7.16,一网在首尔开展在轨测试,最高速度400Mbps,延时32ms:地面终端由韩国Intellian生产. https://www.oneweb.world/media-center/o ...
- ELK(V7)部署与架构分析
1.ELK的背景介绍与应用场景 在项目应用运行的过程中,往往会产生大量的日志,我们往往需要根据日志来定位分析我们的服务器项目运行情况与BUG产生位置.一般情况下直接在日志文件中tailf. grep. ...