傳送門
我似乎連積分都不太熟練→_→
總之就是對於乙個原函式,我們找乙個二次函式來近似它,那麼有
\[\begin
\int_a^bf(x)dx
&=\frac(b^3-a^3)+\frac(b^2-a^2)+c(a-b)\\
&=\frac(2a(b^2+ab+a^2)+3b(b+a)+6c)\\
&=\frac(2ab^2+2aab+2aa^2+3bb+3ba+6c)\\
&=\frac(aa^2+ba+c+ab^2+bb+c+4a(\frac)^2+4b(\frac)+4c)\\
&=\frac(f(a)+f(b)+4f(\frac))\\
\end
\]然後自適應\(simpson\)就是用來調整精度的,具體可以看**
ps:關於**裡那個詭異的\(\leq 15 \cdot eps\),據說是因為這麼乙個結論:
//minamoto
#include#define r register
#define fp(i,a,b) for(r int i=(a),i=(b)+1;ii;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
using namespace std;
double a,b,c,d,l,r;
inline double f(const r double &x)
inline double simpson(const r double l,const r double r)
double ask(double l,double r,double eps,double ans)
int main()
Luogu4525 模板 自適應辛普森法1
題面 洛谷 講一講這東西吧。自適應辛普森法的原理就是用二次函式來擬合所給函式,然後計算二次函式的積分得到近似答案,這裡首先給出二次函式的積分公式 也就是所謂的辛普森公式 並證明。int f x x int ax 2 bx c x fracr 3 fracr 2 cr fracl 3 fracl 2 ...
luogu P4525 模板 自適應辛普森法 1
題面傳送門 眾所周知,定積分可以推公式求。但是如果我們推不出來不想推怎麼辦呢?作為oi競賽肯定不會讓你寫個什麼輸出根號之類的,肯定會有絕對誤差或相對誤差不大於多少多少。那麼我們就可以用自適應辛普森法。就是二次函式擬合,沒別的。但是如果乙個亂七八糟的函式直接二次函式擬合會很奇怪的東西出來。所以我們採用...
洛谷P4526 模板 自適應辛普森法2
洛谷傳送門 計算積分 保留至小數點後5位。若積分發散,請輸出 orz 一行,包含乙個實數,為a的值 一行,積分值或orz 輸入 1複製 2.33輸出 1複製 1.51068a 50 請注意時空限制。這和辛普森公式又啥關係?上限可是正無窮 帶著好奇心,我開啟了幾何畫板。這 這麼快就收斂了?看看a 50...