洛谷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%B3%95/ 以及洛谷不多的题解。
辛普森推导过程就看参考吧,当然你要想看懂推导需要:
1.会高中导数那点东西,至少知道原函数怎么求。
2.粗略了解定积分。
3.知道微积分第一、第二基本定理(从知乎上找的:https://www.zhihu.com/question/21439225)。
然后推导就很简单了,实际上就是用的是将任意曲线近似转换成二次函数曲线去求。
————————————————————
https://www.luogu.org/problemnew/show/P4525
计算积分
结果保留至小数点后6位。
数据保证计算过程中分母不为0且积分能够收敛。
这就是自适应辛普森的板题了,eps开到1e-12大概就能过了。
(话说为什么要“自适应”?那当然是因为精度的原因啦,我们左右分一下将答案求和和一个区间的答案比较一下没有多少误差就return就行啦。)
#include<cmath>
#include<queue>
#include<cstdio>
#include<cctype>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef double dl;
const dl eps=1e-;
dl a,b,c,d,L,R;
inline dl f(dl x){
return (c*x+d)/(a*x+b);
}
inline dl simpson(dl l,dl r){
dl mid=(l+r)/;
return (f(l)+*f(mid)+f(r))*(r-l)/;
}
inline dl asr(dl l,dl r,dl ans){
dl mid=(l+r)/;
dl l1=simpson(l,mid),r1=simpson(mid,r);
if(fabs(l1+r1-ans)<eps)return l1+r1;
return asr(l,mid,l1)+asr(mid,r,r1);
}
int main(){
scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&c,&d,&L,&R);
printf("%lf\n",asr(L,R,simpson(L,R)));
return ;
}
————————————————————
https://www.luogu.org/problemnew/show/P4526
计算积分
保留至小数点后5位。若积分发散,请输出"orz"。
挺吓人的,但思考a<0显然就发散了。
a>=0时a越大收敛得越慢,于是打表,大概得出来x=12时就已经约为0了。
于是L=eps,R=12跑一遍自适应辛普森法即可。
#include<cmath>
#include<queue>
#include<cstdio>
#include<cctype>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef double dl;
const dl eps=1e-;
dl a;
inline dl f(dl x){
return pow(x,a/x-x);
}
inline dl simpson(dl l,dl r){
dl mid=(l+r)/;
return (f(l)+*f(mid)+f(r))*(r-l)/;
}
inline dl asr(dl l,dl r,dl ans){
dl mid=(l+r)/;
dl l1=simpson(l,mid),r1=simpson(mid,r);
if(fabs(l1+r1-ans)<eps)return l1+r1;
return asr(l,mid,l1)+asr(mid,r,r1);
}
int main(){
scanf("%lf",&a);
if(a<)puts("orz");
else printf("%.5lf\n",asr(eps,,simpson(eps,)));
return ;
}
+++++++++++++++++++++++++++++++++++++++++++
+本文作者:luyouqi233。 +
+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+
+++++++++++++++++++++++++++++++++++++++++++
洛谷4525 & 4526:【模板】自适应辛普森法——题解的更多相关文章
- 洛谷 P4525 & P4526 [模板] 自适应辛普森积分
题目:https://www.luogu.org/problemnew/show/P4525 https://www.luogu.org/problemnew/show/P4526 学习辛普森积分:h ...
- 洛谷P3387 【模板】缩点 题解
背景 今天\(loj\)挂了,于是就有了闲情雅致来刷\(luogu\) 题面 洛谷P3387 [模板]缩点传送门 题意 给定一个\(n\)个点\(m\)条边有向图,每个点有一个权值,求一条路径,使路径 ...
- 洛谷.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]\] 推导过程 ...
- 洛谷 P3385 【模板】负环 题解
P3385 [模板]负环 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 寻找一个从顶点1所能到达的负环,负环定义为:一个边权之和为负的环. 输入格式 第一行一个正整数T ...
- 洛谷P4526 【模板】自适应辛普森法2
P4526 [模板]自适应辛普森法2 洛谷传送门 题目描述 计算积分 保留至小数点后5位.若积分发散,请输出"orz". 输入格式 一行,包含一个实数,为a的值 输出格式 一行,积 ...
- 洛谷P4525 【模板】自适应辛普森法1与2
洛谷P4525 [模板]自适应辛普森法1 与P4526[模板]自适应辛普森法2 P4525洛谷传送门 P4525题目描述 计算积分 结果保留至小数点后6位. 数据保证计算过程中分母不为0且积分能够收敛 ...
- P4526 【模板】自适应辛普森法2
P4526 [模板]自适应辛普森法2 #include <bits/stdc++.h> using namespace std; ; double a; inline double f(d ...
- P4525 【模板】自适应辛普森法1
P4525 [模板]自适应辛普森法1 #include <bits/stdc++.h> using namespace std; ; double a, b, c, d, l, r; in ...
- FFT/NTT总结+洛谷P3803 【模板】多项式乘法(FFT)(FFT/NTT)
前言 众所周知,这两个东西都是用来算多项式乘法的. 对于这种常人思维难以理解的东西,就少些理解,多背板子吧! 因此只总结一下思路和代码,什么概念和推式子就靠巨佬们吧 推荐自为风月马前卒巨佬的概念和定理 ...
随机推荐
- 深入解析UUID及其应用(转载)
UUID 编辑 UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Founda ...
- 后续博客转移到zhylj.cc
此博客暂不更新了 zhylj.cc
- C 计算数字的位数循环
#include <stdio.h> int main(int argc, char **argv) { // int x; int n=0; scanf("%d",& ...
- git push origin master 错误解决办法
一.错误代码如下: error: failed to push some refs to 'https://github.com/wbingithub/drag.git' 二.在网上搜了一下,如下写就 ...
- win7下本地运行spark以及spark.sql.warehouse.dir设置
SparkSession spark = SparkSession .builder() .master("local[*]") .enableHiveSupport() .con ...
- Machine Learning笔记整理 ------ (四)线性模型
1. 线性模型 基本形式:给定由d个属性描述的样本 x = (x1; x2; ......; xd),其中,xi是x在第i个属性上的取值,则有: f(x) = w1x1 + w2x2 + ...... ...
- Python3 小工具-TCP半连接扫描
from scapy.all import * import optparse import threading def scan(ip,port): pkt=IP(dst=ip)/TCP(dport ...
- Python3 集合
1.集合的表示 集合是一个无序不重复的元素序列 创建空集合 set() 2.集合的运算 a={1,2,3} b={2,3,4} print(a-b) #a中包含b中不包含 print(a|b) #a中 ...
- 三:Fair Scheduler 公平调度器
参考资料: http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/FairScheduler.html http://h ...
- POJ 1921 Paper Cut(计算几何の折纸问题)
Description Still remember those games we played in our childhood? Folding and cutting paper must be ...