博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P4526 【模板】自适应辛普森法2
阅读量:5273 次
发布时间:2019-06-14

本文共 1020 字,大约阅读时间需要 3 分钟。

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

题目描述

计算积分

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

输入格式

一行,包含一个实数,为a的值

输出格式

一行,积分值或orz

输入输出样例

输入 #1复制
2.33
输出 #1复制
1.51068

说明/提示

a<=50

请注意时空限制。

Solution

这和辛普森公式又啥关系?上限可是正无穷!

带着好奇心,我打开了几何画板。

几何画板

这……这么快就收敛了?!?!?!

看看a=50?

随便把B放在3边上。结果……反正是有限的,有限的就好。

貌似在x=10附近,这玩意就收敛的可怜了……

你有没有考虑a<0?

把B靠近原点,再把a调为-1。

不能想,要是B的横坐标为0会发生什么……貌似直接不显示B点了……

几何画板——自保系统?

 

从这里就可以得到:

  1. a<0时函数发散
  2. a>0时函数收敛于20左右(确保误差尽量小,建议稍大一点)

Code

#include
#include
#include
#define IL inline#define re registerusing namespace std;const double eps=1e-12;double a;IL double f(double x){ return pow(x,a/x-x);}IL double simpson(double l,double r){ return (r-l)*(f(l)+4.0*f((l+r)/2.0)+f(r))/6.0;}double integral(double l,double r){ re double mid=(l+r)/2,ans=simpson(l,r); if(fabs(ans-simpson(l,mid)-simpson(mid,r))
>a; if(a<0) cout<<"orz"; else printf("%.5lf",integral(eps,15)); return 0;}

Attention

保留5位小数

转载于:https://www.cnblogs.com/send-off-a-friend/p/11406273.html

你可能感兴趣的文章
【HTML】网页中如何让DIV在网页滚动到特定位置时出现
查看>>
文件序列化
查看>>
C++11 中的线程、锁和条件变量
查看>>
HDU 2485 Destroying the bus stations(!最大流∩!费用流∩搜索)
查看>>
Oracle关于用户信息的一些SQL语句
查看>>
2019-02-28处理公司同事无法上网事件记录
查看>>
cookie的过期时间
查看>>
HTCVive使用
查看>>
Javascript 浏览器检测
查看>>
Java程序员常用工具类库
查看>>
头文件有h和没有h的区别
查看>>
数据库的查询与视图
查看>>
洪涝有源淹没算法及淹没结果分析
查看>>
Flex在使用无线电的button切换直方图横坐标和叙述性说明
查看>>
C++ AMP 介绍(两)
查看>>
C++垃圾回收器的实现
查看>>
(二)数据加密技术
查看>>
Iptables和Firewall-selinux
查看>>
C#设置程序自启动
查看>>
Hadoop基准测试(一)
查看>>