自适应Simpson

Simpson是什么呢?

就是如果我们要求一个积分,但是里面的f(x)十分麻烦,于是我们就需要用Simpson的抛物线来近似最后的答案。

加一个自适应就是适应精度,当精度很小的时候,就直接返回。

Simpson公式:

青烟绕指柔

例题:Simpson例题


AC代码:

#pragma GCC optimize(2)
#include<bits/stdc++.h>
//#define int long long
using namespace std;
double a,b,c,d,L,R;
inline double f(double x){return (c*x+d)/(a*x+b);}
inline double simpson(double l,double r){
	return (f(l)+4*f((l+r)/2)+f(r))*(r-l)/6.0;
}
double solve(double l,double r,double eps,double res){
	double mid=(l+r)/2,ls=simpson(l,mid),rs=simpson(mid,r);
	if(fabs(ls+rs-res)<=eps)	return res;
	return solve(l,mid,eps/2,ls)+solve(mid,r,eps/2,rs);
}
double res(double l,double r,double eps){
	return solve(l,r,eps,simpson(l,r));
}
signed main(){
	cin>>a>>b>>c>>d>>L>>R;
	printf("%.6lf\n",res(L,R,1e-7));
	return 0;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值